package models import ( "fmt" "strings" "time" "github.com/google/uuid" "gorm.io/gorm" ) // ============================================================================ // 结构体定义 // ============================================================================ // Function 函数表模型 // 用于管理应用程序的函数代码 // CreatedAt/UpdatedAt 由 GORM 自动维护 type Function struct { // ID:主键,自增 ID uint `gorm:"primaryKey;comment:函数ID,自增主键" json:"id"` // UUID:函数的唯一标识符,36位字符串 UUID string `gorm:"uniqueIndex;size:36;not null;comment:函数的唯一标识符" json:"uuid"` // Number:函数编号,13位Unix时间戳(毫秒级) Number string `gorm:"uniqueIndex;size:13;not null;comment:函数编号,13位Unix时间戳" json:"number"` // AppUUID:应用绑定标识符,"0"表示全局函数,其他UUID表示绑定到特定应用 AppUUID string `gorm:"size:36;not null;default:'0';comment:应用绑定标识符" json:"app_uuid"` // Alias:函数别名,便于识别和管理 Alias string `gorm:"uniqueIndex;size:100;not null;comment:函数别名" json:"alias"` // Code:函数代码内容 Code string `gorm:"type:text;comment:函数代码" json:"code"` // Remark:备注信息,用于描述函数用途 Remark string `gorm:"type:text;comment:备注信息" json:"remark"` // 时间字段 CreatedAt time.Time `gorm:"comment:创建时间" json:"created_at"` UpdatedAt time.Time `gorm:"comment:更新时间" json:"updated_at"` } // ============================================================================ // 结构体方法 // ============================================================================ // BeforeCreate 在创建记录前自动生成UUID和Number func (function *Function) BeforeCreate(tx *gorm.DB) error { // 生成UUID if function.UUID == "" { function.UUID = strings.ToUpper(uuid.New().String()) } // 生成Number:使用13位Unix时间戳(毫秒级) function.Number = fmt.Sprintf("%d", time.Now().UnixMilli()) return nil } // TableName 指定表名 func (Function) TableName() string { return "functions" }