You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
101 lines
2.3 KiB
101 lines
2.3 KiB
package common
|
|
|
|
import (
|
|
"time"
|
|
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
const (
|
|
CLIUserID = "01F5D7K0754ZDRPSKYDHE5CE0H"
|
|
CLIUsername = "cli"
|
|
)
|
|
|
|
type BasicFields struct {
|
|
CreatedAt time.Time `gorm:"column:created_at" json:"created_at"`
|
|
CreatedByDB GUID `gorm:"column:created_by" json:"-"`
|
|
CreatedByJSON string `gorm:"-" json:"created_by"`
|
|
UpdatedAt time.Time `gorm:"column:updated_at" json:"updated_at"`
|
|
UpdatedByDB GUID `gorm:"column:updated_by" json:"-"`
|
|
UpdatedByJSON string `gorm:"-" json:"updated_by"`
|
|
DeletedAtDB gorm.DeletedAt `gorm:"column:deleted_at" json:"-"`
|
|
DeletedAtJSON *time.Time `gorm:"-" json:"deleted_at,omitempty"`
|
|
DeletedBy string `gorm:"column:deleted_by" json:"deleted_by,omitempty"`
|
|
}
|
|
|
|
func (basicFields *BasicFields) BeforeCreate(tx *gorm.DB) error {
|
|
if userID, ok := tx.Get("userID"); ok {
|
|
if guidString, ok := userID.(string); ok {
|
|
guid, err := StringToGUID(guidString)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
basicFields.CreatedByDB = guid
|
|
basicFields.UpdatedByDB = guid
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func (basicFields *BasicFields) AfterCreate(tx *gorm.DB) error {
|
|
if username, ok := tx.Get("username"); ok {
|
|
if name, ok := username.(string); ok {
|
|
basicFields.CreatedByJSON = name
|
|
basicFields.UpdatedByJSON = name
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
type ModelIntegerPK struct {
|
|
ID uint64 `gorm:"primaryKey;column:id" json:"id"`
|
|
BasicFields
|
|
}
|
|
|
|
type ModelGUIDPK struct {
|
|
ID GUID `gorm:"primaryKey;column:id" json:"id"`
|
|
BasicFields
|
|
}
|
|
|
|
func (guidPK *ModelGUIDPK) BeforeCreate(tx *gorm.DB) error {
|
|
id, err := NewGUID()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
guidPK.ID = GUID(id)
|
|
if userID, ok := tx.Get("userID"); ok {
|
|
if guidString, ok := userID.(string); ok {
|
|
guid, err := StringToGUID(guidString)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
guidPK.CreatedByDB = guid
|
|
guidPK.UpdatedByDB = guid
|
|
}
|
|
}
|
|
return err
|
|
}
|
|
|
|
type ModelHiddenGUIDPK struct {
|
|
ID GUID `gorm:"primaryKey;column:id" json:"-"`
|
|
BasicFields
|
|
}
|
|
|
|
func (guidPK *ModelHiddenGUIDPK) BeforeCreate(tx *gorm.DB) error {
|
|
id, err := NewGUID()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
guidPK.ID = GUID(id)
|
|
if userID, ok := tx.Get("userID"); ok {
|
|
if guidString, ok := userID.(string); ok {
|
|
guid, err := StringToGUID(guidString)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
guidPK.CreatedByDB = guid
|
|
guidPK.UpdatedByDB = guid
|
|
}
|
|
}
|
|
return err
|
|
}
|