Files

29 lines
1.3 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Package models 定义与数据表同名的领域模型和数据访问方法。
package models
import (
"time"
"github.com/google/uuid"
"gorm.io/gorm"
)
// Entity 是所有主表共享字段。id 是数据库自增主键identity 是应用生成的 UUID V7 业务标识。
type Entity struct {
ID uint64 `gorm:"column:id;primaryKey;autoIncrement" json:"id"` // 数据库自增主键
Identity string `gorm:"column:identity;type:varchar(36);not null;uniqueIndex" json:"identity"` // UUID V7 业务标识
CreatedAt time.Time `gorm:"column:created_at;type:timestamptz;not null;index" json:"created_at"` // 创建时间
UpdatedAt time.Time `gorm:"column:updated_at;type:timestamptz;not null" json:"updated_at"` // 更新时间
DeletedAt gorm.DeletedAt `gorm:"index"` // 软删除时间,非空表示记录已删除但仍保留在数据库中
Status int `gorm:"column:status;not null;default:0;index" json:"status"` // 通用记录状态
}
// NewIdentity 生成时间有序的 UUID V7 字符串,生成失败属于不可恢复的运行时错误。
func NewIdentity() string {
identity, err := uuid.NewV7()
if err != nil {
panic(err)
}
return identity.String()
}