You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
synctv/internal/bootstrap/setting.go

58 lines
1.1 KiB
Go

package bootstrap
import (
"context"
"github.com/synctv-org/synctv/internal/db"
"github.com/synctv-org/synctv/internal/model"
"github.com/synctv-org/synctv/internal/settings"
)
func InitSetting(ctx context.Context) error {
return initAndFixSettings(settings.Settings)
}
func initSettings(s map[string]settings.Setting) error {
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
}
}
return nil
}
func initAndFixSettings(s map[string]settings.Setting) error {
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 {
// auto fix
err = b.SetString(b.DefaultString())
if err != nil {
return err
}
}
}
return nil
}