diff --git a/internal/db/setting.go b/internal/db/setting.go new file mode 100644 index 00000000000..486ed72b0cf --- /dev/null +++ b/internal/db/setting.go @@ -0,0 +1,30 @@ +package db + +import ( + "fmt" + "github.com/alist-org/alist/v3/internal/model" + "github.com/pkg/errors" +) + +func SaveSettings(items []model.SettingItem) error { + return errors.WithStack(db.Save(items).Error) +} + +func SaveSetting(item model.SettingItem) error { + return errors.WithStack(db.Save(item).Error) +} + +func GetSettingsByGroup(group int) ([]model.SettingItem, error) { + var items []model.SettingItem + if err := db.Where(fmt.Sprintf("%s = ?", columnName("group")), group).Find(&items).Error; err != nil { + return nil, errors.WithStack(err) + } + return items, nil +} + +func DeleteSettingByKey(key string) error { + setting := model.SettingItem{ + Key: key, + } + return errors.WithStack(db.Delete(&setting).Error) +} diff --git a/internal/model/setting.go b/internal/model/setting.go new file mode 100644 index 00000000000..6865113f26a --- /dev/null +++ b/internal/model/setting.go @@ -0,0 +1,11 @@ +package model + +type SettingItem struct { + Key string `json:"key" gorm:"primaryKey" binding:"required"` // unique key + Value string `json:"value"` // value + Help string `json:"help"` // help message + Type string `json:"type"` // string, number, bool, select + Values string `json:"values"` // values for select + Group int `json:"group"` // use to group setting in frontend + Access int `json:"access"` // admin/guest/general +}