|
|
|
@ -13,38 +13,64 @@ func InitSetting(ctx context.Context) error {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func initSettings(s map[string]settings.Setting) error {
|
|
|
|
|
settingsCache, err := db.GetSettingItemsToMap()
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
for _, b := range s {
|
|
|
|
|
s := &model.Setting{
|
|
|
|
|
Name: b.Name(),
|
|
|
|
|
Value: b.DefaultString(),
|
|
|
|
|
Type: b.Type(),
|
|
|
|
|
Group: b.Group(),
|
|
|
|
|
}
|
|
|
|
|
err := db.FirstOrCreateSettingItemValue(s)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
err = b.Init(s.Value)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
if s, ok := settingsCache[b.Name()]; ok {
|
|
|
|
|
err = b.Init(s.Value)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
s := &model.Setting{
|
|
|
|
|
Name: b.Name(),
|
|
|
|
|
Value: b.DefaultString(),
|
|
|
|
|
Type: b.Type(),
|
|
|
|
|
Group: b.Group(),
|
|
|
|
|
}
|
|
|
|
|
err := db.FirstOrCreateSettingItemValue(s)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
err = b.Init(s.Value)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return nil
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func settingEqual(s *model.Setting, b settings.Setting) bool {
|
|
|
|
|
return s.Type == b.Type() && s.Group == b.Group() && s.Name == b.Name()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func initAndFixSettings(s map[string]settings.Setting) error {
|
|
|
|
|
settingsCache, err := db.GetSettingItemsToMap()
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
var (
|
|
|
|
|
setting *model.Setting
|
|
|
|
|
)
|
|
|
|
|
for _, b := range s {
|
|
|
|
|
s := &model.Setting{
|
|
|
|
|
Name: b.Name(),
|
|
|
|
|
Value: b.DefaultString(),
|
|
|
|
|
Type: b.Type(),
|
|
|
|
|
Group: b.Group(),
|
|
|
|
|
}
|
|
|
|
|
err := db.FirstOrCreateSettingItemValue(s)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
if sc, ok := settingsCache[b.Name()]; ok && settingEqual(sc, b) {
|
|
|
|
|
setting = sc
|
|
|
|
|
} else {
|
|
|
|
|
setting = &model.Setting{
|
|
|
|
|
Name: b.Name(),
|
|
|
|
|
Value: b.DefaultString(),
|
|
|
|
|
Type: b.Type(),
|
|
|
|
|
Group: b.Group(),
|
|
|
|
|
}
|
|
|
|
|
err := db.FirstOrCreateSettingItemValue(setting)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
err = b.Init(s.Value)
|
|
|
|
|
err = b.Init(setting.Value)
|
|
|
|
|
if err != nil {
|
|
|
|
|
// auto fix
|
|
|
|
|
err = b.SetString(b.DefaultString())
|
|
|
|
|