Module project, commit, submission
All checks were successful
Build and Release / release (push) Successful in 1m15s

This commit is contained in:
2026-04-26 16:31:03 +07:00
parent ac90236022
commit 6918a100fc
60 changed files with 5957 additions and 1020 deletions

View File

@@ -0,0 +1,64 @@
package constants
type ProjectMemberRole int16
const (
ProjectMemberRoleOwner ProjectMemberRole = 1
ProjectMemberRoleEditor ProjectMemberRole = 2
ProjectMemberRoleViewer ProjectMemberRole = 3
)
func (r ProjectMemberRole) String() string {
switch r {
case ProjectMemberRoleOwner:
return "OWNER"
case ProjectMemberRoleEditor:
return "EDITOR"
case ProjectMemberRoleViewer:
return "VIEWER"
default:
return "UNKNOWN"
}
}
func (r ProjectMemberRole) Int16() int16 {
return int16(r)
}
func ParseProjectMemberRole(v int16) ProjectMemberRole {
switch v {
case 1:
return ProjectMemberRoleOwner
case 2:
return ProjectMemberRoleEditor
case 3:
return ProjectMemberRoleViewer
default:
return ProjectMemberRoleViewer
}
}
func ParseProjectMemberRoleText(v string) ProjectMemberRole {
switch v {
case "OWNER":
return ProjectMemberRoleOwner
case "EDITOR":
return ProjectMemberRoleEditor
case "VIEWER":
return ProjectMemberRoleViewer
default:
return ProjectMemberRoleViewer
}
}
func (r ProjectMemberRole) CanWrite() bool {
return r == ProjectMemberRoleOwner || r == ProjectMemberRoleEditor
}
func (r ProjectMemberRole) CanRead() bool {
return r == ProjectMemberRoleOwner || r == ProjectMemberRoleEditor || r == ProjectMemberRoleViewer
}
func (r ProjectMemberRole) IsOwner() bool {
return r == ProjectMemberRoleOwner
}

View File

@@ -1,11 +1,20 @@
package convert
import (
"crypto/md5"
"encoding/json"
"fmt"
"time"
"github.com/jackc/pgx/v5/pgtype"
)
func GenerateQueryKey(prefix string, params any) string {
b, _ := json.Marshal(params)
hash := fmt.Sprintf("%x", md5.Sum(b))
return fmt.Sprintf("%s:query:%s", prefix, hash)
}
func UUIDToString(v pgtype.UUID) string {
if v.Valid {
return v.String()
@@ -75,6 +84,16 @@ func PtrToText(s *string) pgtype.Text {
}
}
func StringToText(s string) pgtype.Text {
if s == "" {
return pgtype.Text{Valid: false}
}
return pgtype.Text{
String: s,
Valid: true,
}
}
func TextToPtr(v pgtype.Text) *string {
if !v.Valid {
return nil