Enhance database models with comments and table descriptions

- Added comments to various fields in the database models for better clarity and understanding.
- Implemented TableComment methods for several models to provide descriptive information about their purpose.
- Updated the AutoMigrate function to support setting table comments in the database.
- Improved overall documentation within the code to facilitate future maintenance and development.
This commit is contained in:
nepiedg
2026-01-03 02:35:11 +00:00
parent 16844d4a42
commit 1ad775be63
9 changed files with 182 additions and 108 deletions
+27 -19
View File
@@ -6,44 +6,52 @@ import "time"
//
// 注意:沿用旧系统字段(createtime/updatetime/deletetime 为秒级时间戳),不使用 gorm.Model。
type SmokeAIAdvice struct {
ID uint `gorm:"primaryKey;autoIncrement" json:"id"`
ID uint `gorm:"primaryKey;autoIncrement;comment:记录ID" json:"id"`
UID int `gorm:"column:uid;index:idx_smoke_ai_advice_uid_date,priority:1;uniqueIndex:uniq_smoke_ai_advice,priority:1" json:"-"`
AdviceDate time.Time `gorm:"column:advice_date;type:date;index:idx_smoke_ai_advice_uid_date,priority:2;uniqueIndex:uniq_smoke_ai_advice,priority:2" json:"advice_date"`
PromptVersion string `gorm:"column:prompt_version;size:30;default:v1;uniqueIndex:uniq_smoke_ai_advice,priority:3" json:"prompt_version"`
AdviceDate time.Time `gorm:"column:advice_date;type:date;index:idx_smoke_ai_advice_uid_date,priority:2;uniqueIndex:uniq_smoke_ai_advice,priority:2;comment:建议日期" json:"advice_date"`
PromptVersion string `gorm:"column:prompt_version;size:30;default:v1;uniqueIndex:uniq_smoke_ai_advice,priority:3;comment:提示词版本" json:"prompt_version"`
Provider string `gorm:"column:provider;size:30" json:"provider,omitempty"`
Model string `gorm:"column:model;size:60" json:"model,omitempty"`
Provider string `gorm:"column:provider;size:30;comment:AI提供方" json:"provider,omitempty"`
Model string `gorm:"column:model;size:60;comment:模型名" json:"model,omitempty"`
InputSnapshot []byte `gorm:"column:input_snapshot;type:json" json:"input_snapshot,omitempty"`
Advice string `gorm:"column:advice;type:mediumtext" json:"advice"`
InputSnapshot []byte `gorm:"column:input_snapshot;type:json;comment:输入快照(JSON)" json:"input_snapshot,omitempty"`
Advice string `gorm:"column:advice;type:mediumtext;comment:AI建议内容" json:"advice"`
TokensIn *int `gorm:"column:tokens_in" json:"tokens_in,omitempty"`
TokensOut *int `gorm:"column:tokens_out" json:"tokens_out,omitempty"`
CostCent *int `gorm:"column:cost_cent" json:"cost_cent,omitempty"`
TokensIn *int `gorm:"column:tokens_in;comment:输入tokens" json:"tokens_in,omitempty"`
TokensOut *int `gorm:"column:tokens_out;comment:输出tokens" json:"tokens_out,omitempty"`
CostCent *int `gorm:"column:cost_cent;comment:成本(分)" json:"cost_cent,omitempty"`
CreateTime *int64 `gorm:"column:createtime" json:"createtime,omitempty"`
UpdateTime *int64 `gorm:"column:updatetime" json:"updatetime,omitempty"`
DeleteTime *int64 `gorm:"column:deletetime" json:"deletetime,omitempty"`
CreateTime *int64 `gorm:"column:createtime;comment:创建时间(秒)" json:"createtime,omitempty"`
UpdateTime *int64 `gorm:"column:updatetime;comment:更新时间(秒)" json:"updatetime,omitempty"`
DeleteTime *int64 `gorm:"column:deletetime;comment:删除时间(秒)" json:"deletetime,omitempty"`
}
func (SmokeAIAdvice) TableName() string {
return "fa_smoke_ai_advice"
}
func (SmokeAIAdvice) TableComment() string {
return "每日AI戒烟建议"
}
// SmokeAIAdviceUnlock 对应表 fa_smoke_ai_advice_unlocks(非会员用户的每日广告解锁记录)。
type SmokeAIAdviceUnlock struct {
ID uint `gorm:"primaryKey;autoIncrement" json:"id"`
ID uint `gorm:"primaryKey;autoIncrement;comment:记录ID" json:"id"`
UID int `gorm:"column:uid;index:idx_smoke_ai_unlock_uid_date,priority:1;uniqueIndex:uniq_smoke_ai_unlock,priority:1" json:"-"`
UnlockDate time.Time `gorm:"column:unlock_date;type:date;index:idx_smoke_ai_unlock_uid_date,priority:2;uniqueIndex:uniq_smoke_ai_unlock,priority:2" json:"unlock_date"`
AdWatchedAt time.Time `gorm:"column:ad_watched_at" json:"ad_watched_at"`
UnlockDate time.Time `gorm:"column:unlock_date;type:date;index:idx_smoke_ai_unlock_uid_date,priority:2;uniqueIndex:uniq_smoke_ai_unlock,priority:2;comment:解锁日期" json:"unlock_date"`
AdWatchedAt time.Time `gorm:"column:ad_watched_at;comment:广告完成时间" json:"ad_watched_at"`
CreateTime *int64 `gorm:"column:createtime" json:"createtime,omitempty"`
UpdateTime *int64 `gorm:"column:updatetime" json:"updatetime,omitempty"`
DeleteTime *int64 `gorm:"column:deletetime" json:"deletetime,omitempty"`
CreateTime *int64 `gorm:"column:createtime;comment:创建时间(秒)" json:"createtime,omitempty"`
UpdateTime *int64 `gorm:"column:updatetime;comment:更新时间(秒)" json:"updatetime,omitempty"`
DeleteTime *int64 `gorm:"column:deletetime;comment:删除时间(秒)" json:"deletetime,omitempty"`
}
func (SmokeAIAdviceUnlock) TableName() string {
return "fa_smoke_ai_advice_unlocks"
}
func (SmokeAIAdviceUnlock) TableComment() string {
return "AI戒烟建议-广告解锁"
}
+13 -9
View File
@@ -8,25 +8,29 @@ import "time"
// 因此这里不使用 gorm.Model 的 created_at/updated_at/deleted_at。
type SmokeLog struct {
// 复合主键(id, uid),其中 id 自增。
ID int `gorm:"column:id;primaryKey;autoIncrement" json:"id"`
ID int `gorm:"column:id;primaryKey;autoIncrement;comment:记录ID" json:"id"`
UID int `gorm:"column:uid;primaryKey" json:"-"`
// smoke_time 在库里是 date 类型(只包含日期,不包含时分秒)。
SmokeTime *time.Time `gorm:"column:smoke_time;type:date" json:"smoke_time,omitempty"`
SmokeTime *time.Time `gorm:"column:smoke_time;type:date;comment:抽烟日期" json:"smoke_time,omitempty"`
// smoke_at:真实抽烟时间(可补录,精确到时分秒)
SmokeAt *time.Time `gorm:"column:smoke_at;type:datetime" json:"smoke_at,omitempty"`
SmokeAt *time.Time `gorm:"column:smoke_at;type:datetime;comment:真实抽烟时间(精确到秒)" json:"smoke_at,omitempty"`
Remark string `gorm:"column:remark;type:text" json:"remark,omitempty"`
Remark string `gorm:"column:remark;type:text;comment:原因/备注" json:"remark,omitempty"`
// createtime/updatetime/deletetime:秒级 Unix 时间戳(与 gorm 默认字段不同)
CreateTime *int64 `gorm:"column:createtime" json:"createtime,omitempty"`
UpdateTime *int64 `gorm:"column:updatetime" json:"updatetime,omitempty"`
DeleteTime *int64 `gorm:"column:deletetime" json:"deletetime,omitempty"`
CreateTime *int64 `gorm:"column:createtime;comment:创建时间(秒)" json:"createtime,omitempty"`
UpdateTime *int64 `gorm:"column:updatetime;comment:更新时间(秒)" json:"updatetime,omitempty"`
DeleteTime *int64 `gorm:"column:deletetime;comment:删除时间(秒)" json:"deletetime,omitempty"`
Level int64 `gorm:"column:level;default:1" json:"level"`
Num int `gorm:"column:num;default:1" json:"num"`
Level int64 `gorm:"column:level;default:1;comment:烟瘾程度" json:"level"`
Num int `gorm:"column:num;default:1;comment:抽烟数量" json:"num"`
}
func (SmokeLog) TableName() string {
return "fa_smoke_log"
}
func (SmokeLog) TableComment() string {
return "抽烟记录"
}