Files
NetworkAuth/models/variable.go

66 lines
2.1 KiB
Go
Raw Permalink Normal View History

2025-10-26 00:08:55 +08:00
package models
import (
"fmt"
2025-10-26 00:08:55 +08:00
"strings"
"time"
"github.com/google/uuid"
"gorm.io/gorm"
)
2025-10-27 23:12:15 +08:00
// ============================================================================
// 结构体定义
// ============================================================================
2025-10-26 00:08:55 +08:00
// Variable 变量表模型
// 用于管理应用程序的变量数据
// CreatedAt/UpdatedAt 由 GORM 自动维护
type Variable 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"`
2025-10-26 00:08:55 +08:00
// Alias变量别名便于识别和管理
Alias string `gorm:"uniqueIndex;size:100;not null;comment:变量别名" json:"alias"`
2025-10-26 00:08:55 +08:00
// Data变量数据内容
Data string `gorm:"type:text;comment:变量数据" json:"data"`
// 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"`
}
2025-10-27 23:12:15 +08:00
// ============================================================================
// 结构体方法
// ============================================================================
2025-10-26 00:08:55 +08:00
// BeforeCreate 在创建记录前自动生成UUID和Number
func (variable *Variable) BeforeCreate(tx *gorm.DB) error {
// 生成UUID
if variable.UUID == "" {
variable.UUID = strings.ToUpper(uuid.New().String())
}
// 生成Number使用13位Unix时间戳毫秒级
variable.Number = fmt.Sprintf("%d", time.Now().UnixMilli())
2025-10-26 00:08:55 +08:00
return nil
}
// TableName 指定表名
func (Variable) TableName() string {
return "variables"
}