UPDATE: Project Module
All checks were successful
Build and Release / release (push) Successful in 1m15s

This commit is contained in:
2026-04-25 14:05:15 +07:00
parent 44a63f29c6
commit ac90236022
71 changed files with 5110 additions and 257 deletions

66
pkg/constants/geometry.go Normal file
View File

@@ -0,0 +1,66 @@
package constants
type GeoType int16
const (
GeoTypeID GeoType = 1
GeoTypeName GeoType = 2
GeoTypeIcon GeoType = 3
GeoTypeVariant GeoType = 4
GeoTypeDescription GeoType = 5
GeoTypeUnknow GeoType = 0
)
func (t GeoType) String() string {
switch t {
case GeoTypeID:
return "ID"
case GeoTypeName:
return "NAME"
case GeoTypeIcon:
return "ICON"
case GeoTypeVariant:
return "VARIANT"
case GeoTypeDescription:
return "DESCRIPTION"
default:
return "UNKNOW"
}
}
func ParseGeoTypeText(v string) GeoType {
switch v {
case "ID":
return GeoTypeID
case "NAME":
return GeoTypeName
case "ICON":
return GeoTypeIcon
case "VARIANT":
return GeoTypeVariant
case "DESCRIPTION":
return GeoTypeDescription
default:
return GeoTypeUnknow
}
}
func ParseGeoType(v int16) GeoType {
switch v {
case 1:
return GeoTypeID
case 2:
return GeoTypeName
case 3:
return GeoTypeIcon
case 4:
return GeoTypeVariant
case 5:
return GeoTypeDescription
default:
return GeoTypeUnknow
}
}
func (t GeoType) Int16() int16 {
return int16(t)
}

54
pkg/constants/project.go Normal file
View File

@@ -0,0 +1,54 @@
package constants
type ProjectStatusType int16
const (
ProjectStatusTypePrivate ProjectStatusType = 1
ProjectStatusTypePublic ProjectStatusType = 2
ProjectStatusTypeArchive ProjectStatusType = 3
ProjectStatusTypeUnknow ProjectStatusType = 0
)
func (t ProjectStatusType) String() string {
switch t {
case ProjectStatusTypePrivate:
return "PRIVATE"
case ProjectStatusTypePublic:
return "PUBLIC"
case ProjectStatusTypeArchive:
return "ARCHIVE"
default:
return "UNKNOWN"
}
}
func ParseProjectStatusTypeText(v string) ProjectStatusType {
switch v {
case "PRIVATE":
return ProjectStatusTypePrivate
case "PUBLIC":
return ProjectStatusTypePublic
case "ARCHIVE":
return ProjectStatusTypeArchive
default:
return ProjectStatusTypeUnknow
}
}
func (t ProjectStatusType) Int16() int16 {
return int16(t)
}
func ParseProjectStatusType(v int16) ProjectStatusType {
switch v {
case 1:
return ProjectStatusTypePrivate
case 2:
return ProjectStatusTypePublic
case 3:
return ProjectStatusTypeArchive
default:
return ProjectStatusTypeUnknow
}
}

View File

@@ -3,10 +3,10 @@ package constants
type ProviderType string
const (
GoogleProvider ProviderType = "google"
GithubProvider ProviderType = "github"
FacebookProvider ProviderType = "facebook"
LocalProvider ProviderType = "local"
ProviderTypeGoogle ProviderType = "google"
ProviderTypeGithub ProviderType = "github"
ProviderTypeFacebook ProviderType = "facebook"
ProviderTypeLocal ProviderType = "local"
)
func (p ProviderType) String() string {

View File

@@ -1,39 +1,39 @@
package constants
type Role string
type RoleType string
const (
ADMIN Role = "ADMIN"
MOD Role = "MOD"
USER Role = "USER"
HISTORIAN Role = "HISTORIAN"
BANNED Role = "BANNED"
RoleTypeAdmin RoleType = "ADMIN"
RoleTypeMod RoleType = "MOD"
RoleTypeUser RoleType = "USER"
RoleTypeHistorian RoleType = "HISTORIAN"
RoleTypeBanned RoleType = "BANNED"
)
func (r Role) String() string {
func (r RoleType) String() string {
return string(r)
}
func (r Role) Compare(other Role) bool {
func (r RoleType) Compare(other RoleType) bool {
return r == other
}
func (r Role) IsValid() bool {
func (r RoleType) IsValid() bool {
return CheckValidRole(r)
}
func CheckValidRole(r Role) bool {
return r == ADMIN || r == MOD || r == HISTORIAN || r == USER || r == BANNED
func CheckValidRole(r RoleType) bool {
return r == RoleTypeAdmin || r == RoleTypeMod || r == RoleTypeHistorian || r == RoleTypeUser || r == RoleTypeBanned
}
func ParseRole(s string) (Role, bool) {
r := Role(s)
func ParseRole(s string) (RoleType, bool) {
r := RoleType(s)
if CheckValidRole(r) {
return r, true
}
return "", false
}
func (r Role) ToSlice() []Role {
return []Role{r}
func (r RoleType) ToSlice() []RoleType {
return []RoleType{r}
}

View File

@@ -3,19 +3,19 @@ package constants
type StatusType int16
const (
StatusUnknown StatusType = 0
StatusPending StatusType = 1
StatusApproved StatusType = 2
StatusRejected StatusType = 3
StatusTypeUnknown StatusType = 0
StatusTypePending StatusType = 1
StatusTypeApproved StatusType = 2
StatusTypeRejected StatusType = 3
)
func (t StatusType) String() string {
switch t {
case StatusPending:
case StatusTypePending:
return "PENDING"
case StatusApproved:
case StatusTypeApproved:
return "APPROVED"
case StatusRejected:
case StatusTypeRejected:
return "REJECTED"
default:
return "UNKNOWN"
@@ -29,25 +29,25 @@ func (t StatusType) Int16() int16 {
func ParseStatusType(v int16) StatusType {
switch v {
case 1:
return StatusPending
return StatusTypePending
case 2:
return StatusApproved
return StatusTypeApproved
case 3:
return StatusRejected
return StatusTypeRejected
default:
return StatusUnknown
return StatusTypeUnknown
}
}
func ParseStatusTypeText(v string) StatusType {
switch v {
case "PENDING":
return StatusPending
return StatusTypePending
case "APPROVED":
return StatusApproved
return StatusTypeApproved
case "REJECTED":
return StatusRejected
return StatusTypeRejected
default:
return StatusUnknown
return StatusTypeUnknown
}
}

View File

@@ -3,21 +3,21 @@ package constants
type TokenType int16
const (
TokenPasswordReset TokenType = 1
TokenEmailVerify TokenType = 2
TokenMagicLink TokenType = 3
TokenUpload TokenType = 4
TokenTypePasswordReset TokenType = 1
TokenTypeEmailVerify TokenType = 2
TokenTypeMagicLink TokenType = 3
TokenTypeUpload TokenType = 4
)
func (t TokenType) String() string {
switch t {
case TokenPasswordReset:
case TokenTypePasswordReset:
return "PASSWORD_RESET"
case TokenEmailVerify:
case TokenTypeEmailVerify:
return "EMAIL_VERIFY"
case TokenMagicLink:
case TokenTypeMagicLink:
return "LOGIN_MAGIC_LINK"
case TokenUpload:
case TokenTypeUpload:
return "UPLOAD"
default:
return "UNKNOWN"
@@ -31,13 +31,13 @@ func (t TokenType) Value() int16 {
func ParseTokenType(v int16) TokenType {
switch v {
case 1:
return TokenPasswordReset
return TokenTypePasswordReset
case 2:
return TokenEmailVerify
return TokenTypeEmailVerify
case 3:
return TokenMagicLink
return TokenTypeMagicLink
case 4:
return TokenUpload
return TokenTypeUpload
default:
return 0
}
@@ -46,13 +46,13 @@ func ParseTokenType(v int16) TokenType {
func ParseTokenTypeFromString(s string) TokenType {
switch s {
case "PASSWORD_RESET":
return TokenPasswordReset
return TokenTypePasswordReset
case "EMAIL_VERIFY":
return TokenEmailVerify
return TokenTypeEmailVerify
case "LOGIN_MAGIC_LINK":
return TokenMagicLink
return TokenTypeMagicLink
case "UPLOAD":
return TokenUpload
return TokenTypeUpload
default:
return 0
}

View File

@@ -3,22 +3,22 @@ package constants
type VerifyType int16
const (
VerifyUnknown VerifyType = 0
VerifyIdCard VerifyType = 1
VerifyEducation VerifyType = 2
VerifyExpert VerifyType = 3
VerifyOther VerifyType = 4
VerifyTypeUnknown VerifyType = 0
VerifyTypeIdCard VerifyType = 1
VerifyTypeEducation VerifyType = 2
VerifyTypeExpert VerifyType = 3
VerifyTypeOther VerifyType = 4
)
func (t VerifyType) String() string {
switch t {
case VerifyIdCard:
case VerifyTypeIdCard:
return "ID_CARD"
case VerifyEducation:
case VerifyTypeEducation:
return "EDUCATION"
case VerifyExpert:
case VerifyTypeExpert:
return "EXPERT"
case VerifyOther:
case VerifyTypeOther:
return "OTHER"
default:
return "UNKNOWN"
@@ -32,29 +32,29 @@ func (t VerifyType) Int16() int16 {
func ParseVerifyType(v int16) VerifyType {
switch v {
case 1:
return VerifyIdCard
return VerifyTypeIdCard
case 2:
return VerifyEducation
return VerifyTypeEducation
case 3:
return VerifyExpert
return VerifyTypeExpert
case 4:
return VerifyOther
return VerifyTypeOther
default:
return VerifyUnknown
return VerifyTypeUnknown
}
}
func ParseVerifyTypeText(v string) VerifyType {
switch v {
case "ID_CARD":
return VerifyIdCard
return VerifyTypeIdCard
case "EDUCATION":
return VerifyEducation
return VerifyTypeEducation
case "EXPERT":
return VerifyExpert
return VerifyTypeExpert
case "OTHER":
return VerifyOther
return VerifyTypeOther
default:
return VerifyUnknown
return VerifyTypeUnknown
}
}

View File

@@ -13,6 +13,27 @@ func UUIDToString(v pgtype.UUID) string {
return ""
}
func UUIDToStringPtr(v pgtype.UUID) *string {
if v.Valid {
str := v.String()
return &str
}
return nil
}
func ListUUIDToString(v []pgtype.UUID) []string {
if len(v) == 0 {
return []string{}
}
res := make([]string, 0, len(v))
for _, u := range v {
if u.Valid {
res = append(res, UUIDToString(u))
}
}
return res
}
func StringToUUID(s string) (pgtype.UUID, error) {
var pgId pgtype.UUID
err := pgId.Scan(s)

View File

@@ -53,7 +53,7 @@ func SeedSuperAdmin(pool *pgxpool.Pool) error {
String: string(hashed),
Valid: len(hashed) != 0,
},
AuthProvider: constants.LocalProvider.String(),
AuthProvider: constants.ProviderTypeLocal.String(),
})
if err != nil {
return err
@@ -70,12 +70,12 @@ func SeedSuperAdmin(pool *pgxpool.Pool) error {
return err
}
adminRole, err := q.GetRoleByName(ctx, constants.ADMIN.String())
adminRole, err := q.GetRoleByName(ctx, constants.RoleTypeAdmin.String())
if err != nil {
return err
}
useRole, err := q.GetRoleByName(ctx, constants.USER.String())
useRole, err := q.GetRoleByName(ctx, constants.RoleTypeUser.String())
if err != nil {
return err
}

View File

@@ -66,10 +66,10 @@ func SendMailOTP(dto *models.TokenEntity) error {
var templatePath string
switch dto.TokenType {
case constants.TokenPasswordReset:
case constants.TokenTypePasswordReset:
subject = "Your Password Reset Code"
templatePath = "resources/password_reset.html"
case constants.TokenEmailVerify:
case constants.TokenTypeEmailVerify:
subject = "Verify your email address"
templatePath = "resources/email_verify.html"
default:
@@ -86,11 +86,11 @@ func SendHistorianReviewMail(dto *models.UserVerificationStorageEntity) error {
var templatePath string
feUrl := config.GetConfigWithDefault("FRONTEND_URL", "http://localhost:3000")
switch dto.Status {
case constants.StatusApproved:
case constants.StatusTypeApproved:
subject = "Your Historian Application is Approved"
templatePath = "resources/historian_approved.html"
case constants.StatusRejected:
case constants.StatusTypeRejected:
subject = "Your Historian Application is Rejected"
templatePath = "resources/historian_rejected.html"