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
master
veypi 4 days ago
parent 4d35e50306
commit e5170201ab

@ -10,6 +10,7 @@ import (
"github.com/veypi/vbase/cfg" "github.com/veypi/vbase/cfg"
"github.com/veypi/vbase/models" "github.com/veypi/vbase/models"
"github.com/veypi/vigo" "github.com/veypi/vigo"
"gorm.io/gorm/clause"
) )
// ListRequest 列表请求 // ListRequest 列表请求
@ -27,7 +28,12 @@ func list(x *vigo.X, req *ListRequest) (*ListResponse, error) {
db := cfg.DB() db := cfg.DB()
var settings []models.Setting 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 != "" { if req.Category != nil && *req.Category != "" {
query = query.Where("category = ?", req.Category) query = query.Where("category = ?", req.Category)

@ -44,7 +44,7 @@ func update(x *vigo.X, req *UpdateRequest) (*UpdateResponse, error) {
err := db.Transaction(func(tx *gorm.DB) error { err := db.Transaction(func(tx *gorm.DB) error {
for _, item := range req.Settings { for _, item := range req.Settings {
var s models.Setting 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 return err
} }
s.Value = item.Value s.Value = item.Value

@ -141,7 +141,7 @@ func InitSettings() error {
db := cfg.DB() db := cfg.DB()
for _, s := range defaultSettings { for _, s := range defaultSettings {
var count int64 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 return err
} }
if count == 0 { if count == 0 {
@ -155,7 +155,7 @@ func InitSettings() error {
var settingCache = cache.NewCache(time.Minute, func(key string) (string, error) { var settingCache = cache.NewCache(time.Minute, func(key string) (string, error) {
var s Setting 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 "", err
} }
return s.Value, nil return s.Value, nil
@ -197,7 +197,7 @@ func GetSettingJSON(key string, v interface{}) error {
func SetSetting(key, value, updatedBy string) error { func SetSetting(key, value, updatedBy string) error {
var s Setting var s Setting
db := cfg.DB() 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 return err
} }
s.Value = value s.Value = value

Loading…
Cancel
Save