Feat: Setting model

This commit is contained in:
HFO4
2019-11-10 17:07:35 +08:00
parent 29fe6047a1
commit 943c84320c
6 changed files with 159 additions and 28 deletions

View File

@@ -16,20 +16,44 @@ type Setting struct {
var settingCache = make(map[string]string)
// GetSettingByName 用 Name 获取设置值
func GetSettingByName(name string) (string, error) {
func GetSettingByName(name string) string {
var setting Setting
// 优先从缓存中查找
if optionValue, ok := settingCache[name]; ok {
return optionValue, nil
} else {
// 尝试数据库中查找
result := DB.Where("name = ?", name).First(&setting)
if result.Error == nil {
settingCache[setting.Name] = setting.Value
return setting.Value, nil
}
return "", result.Error
return optionValue
}
// 尝试数据库中查找
result := DB.Where("name = ?", name).First(&setting)
if result.Error == nil {
settingCache[setting.Name] = setting.Value
return setting.Value
}
return ""
}
// GetSettingByNames 用多个 Name 获取设置值
func GetSettingByNames(names []string) map[string]string {
var queryRes []Setting
res := make(map[string]string)
DB.Where("name IN (?)", names).Find(&queryRes)
for _, setting := range queryRes {
res[setting.Name] = setting.Value
}
return res
}
// GetSettingByType 获取一个或多个分组的所有设置值
func GetSettingByType(types []string) map[string]string {
var queryRes []Setting
res := make(map[string]string)
DB.Where("type IN (?)", types).Find(&queryRes)
for _, setting := range queryRes {
res[setting.Name] = setting.Value
}
return res
}