From e5170201ab6ec34fda9420fc135ba4695c5beace Mon Sep 17 00:00:00 2001 From: veypi Date: Fri, 5 Jun 2026 10:11:52 +0800 Subject: [PATCH] refactor(settings): replace raw SQL conditions with GORM struct-based queries - Replace db.Where("key = ?", ...) with db.Where(&Setting{Key: ...}) for type-safe queries - Replace db.Order("category, key") with structured clause.OrderBy in list API - Replace tx.Where("key = ?", ...) with tx.Where(&models.Setting{Key: ...}) in update API - Replace db.Where("key = ?", ...) with db.Where(&Setting{Key: ...}) in InitSettings, settingCache, SetSetting --- api/settings/list.go | 8 +++++++- api/settings/update.go | 2 +- models/setting.go | 6 +++--- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/api/settings/list.go b/api/settings/list.go index c811abf..758741a 100644 --- a/api/settings/list.go +++ b/api/settings/list.go @@ -10,6 +10,7 @@ import ( "github.com/veypi/vbase/cfg" "github.com/veypi/vbase/models" "github.com/veypi/vigo" + "gorm.io/gorm/clause" ) // ListRequest 列表请求 @@ -27,7 +28,12 @@ func list(x *vigo.X, req *ListRequest) (*ListResponse, error) { db := cfg.DB() var settings []models.Setting - query := db.Order("category, `key`") + query := db.Clauses(clause.OrderBy{ + Columns: []clause.OrderByColumn{ + {Column: clause.Column{Name: "category"}}, + {Column: clause.Column{Name: "key"}}, + }, + }) if req.Category != nil && *req.Category != "" { query = query.Where("category = ?", req.Category) diff --git a/api/settings/update.go b/api/settings/update.go index 865c1c2..cb479b9 100644 --- a/api/settings/update.go +++ b/api/settings/update.go @@ -44,7 +44,7 @@ func update(x *vigo.X, req *UpdateRequest) (*UpdateResponse, error) { err := db.Transaction(func(tx *gorm.DB) error { for _, item := range req.Settings { var s models.Setting - if err := tx.Where("`key` = ?", item.Key).First(&s).Error; err != nil { + if err := tx.Where(&models.Setting{Key: item.Key}).First(&s).Error; err != nil { return err } s.Value = item.Value diff --git a/models/setting.go b/models/setting.go index b0515e4..99fe6ea 100644 --- a/models/setting.go +++ b/models/setting.go @@ -141,7 +141,7 @@ func InitSettings() error { db := cfg.DB() for _, s := range defaultSettings { var count int64 - if err := db.Model(&Setting{}).Where("`key` = ?", s.Key).Count(&count).Error; err != nil { + if err := db.Model(&Setting{}).Where(&Setting{Key: s.Key}).Count(&count).Error; err != nil { return err } if count == 0 { @@ -155,7 +155,7 @@ func InitSettings() error { var settingCache = cache.NewCache(time.Minute, func(key string) (string, error) { var s Setting - if err := cfg.DB().Where("`key` = ?", key).First(&s).Error; err != nil { + if err := cfg.DB().Where(&Setting{Key: key}).First(&s).Error; err != nil { return "", err } return s.Value, nil @@ -197,7 +197,7 @@ func GetSettingJSON(key string, v interface{}) error { func SetSetting(key, value, updatedBy string) error { var s Setting db := cfg.DB() - if err := db.Where("`key` = ?", key).First(&s).Error; err != nil { + if err := db.Where(&Setting{Key: key}).First(&s).Error; err != nil { return err } s.Value = value