@@ -47,7 +47,21 @@ func (mi *Model) Insert() error {
4747 now := common .GetTimestamp ()
4848 mi .CreatedTime = now
4949 mi .UpdatedTime = now
50- return DB .Create (mi ).Error
50+
51+ // 保存原始值(因为 Create 后可能被 GORM 的 default 标签覆盖为 1)
52+ originalStatus := mi .Status
53+ originalSyncOfficial := mi .SyncOfficial
54+
55+ // 先创建记录(GORM 会对零值字段应用默认值)
56+ if err := DB .Create (mi ).Error ; err != nil {
57+ return err
58+ }
59+
60+ // 使用保存的原始值进行更新,确保零值能正确保存
61+ return DB .Model (& Model {}).Where ("id = ?" , mi .Id ).Updates (map [string ]interface {}{
62+ "status" : originalStatus ,
63+ "sync_official" : originalSyncOfficial ,
64+ }).Error
5165}
5266
5367func IsModelNameDuplicated (id int , name string ) (bool , error ) {
@@ -61,18 +75,10 @@ func IsModelNameDuplicated(id int, name string) (bool, error) {
6175
6276func (mi * Model ) Update () error {
6377 mi .UpdatedTime = common .GetTimestamp ()
64- return DB .Model (& Model {}).Where ("id = ?" , mi .Id ).Updates (map [string ]interface {}{
65- "model_name" : mi .ModelName ,
66- "description" : mi .Description ,
67- "icon" : mi .Icon ,
68- "tags" : mi .Tags ,
69- "vendor_id" : mi .VendorID ,
70- "endpoints" : mi .Endpoints ,
71- "status" : mi .Status ,
72- "sync_official" : mi .SyncOfficial ,
73- "name_rule" : mi .NameRule ,
74- "updated_time" : mi .UpdatedTime ,
75- }).Error
78+ // 使用 Select 强制更新所有字段,包括零值
79+ return DB .Model (& Model {}).Where ("id = ?" , mi .Id ).
80+ Select ("model_name" , "description" , "icon" , "tags" , "vendor_id" , "endpoints" , "status" , "sync_official" , "name_rule" , "updated_time" ).
81+ Updates (mi ).Error
7682}
7783
7884func (mi * Model ) Delete () error {
0 commit comments