package db import ( "regexp" "strings" "github.com/alist-org/alist/v3/internal/conf" "github.com/alist-org/alist/v3/internal/model" "github.com/pkg/errors" ) type SettingItemHook struct { Hook func(item *model.SettingItem) error } var SettingItemHooks = map[string]SettingItemHook{ conf.VideoTypes: { Hook: func(item *model.SettingItem) error { conf.TypesMap[conf.VideoTypes] = strings.Split(item.Value, ",") return nil }, }, conf.AudioTypes: { Hook: func(item *model.SettingItem) error { conf.TypesMap[conf.AudioTypes] = strings.Split(item.Value, ",") return nil }, }, conf.ImageTypes: { Hook: func(item *model.SettingItem) error { conf.TypesMap[conf.ImageTypes] = strings.Split(item.Value, ",") return nil }, }, conf.TextTypes: { Hook: func(item *model.SettingItem) error { conf.TypesMap[conf.TextTypes] = strings.Split(item.Value, ",") return nil }, }, //conf.OfficeTypes: { // Hook: func(item *model.SettingItem) error { // conf.TypesMap[conf.OfficeTypes] = strings.Split(item.Value, ",") // return nil // }, //}, conf.ProxyTypes: { func(item *model.SettingItem) error { conf.TypesMap[conf.ProxyTypes] = strings.Split(item.Value, ",") return nil }, }, conf.PrivacyRegs: { Hook: func(item *model.SettingItem) error { regStrs := strings.Split(item.Value, "\n") regs := make([]*regexp.Regexp, 0, len(regStrs)) for _, regStr := range regStrs { reg, err := regexp.Compile(regStr) if err != nil { return errors.WithStack(err) } regs = append(regs, reg) } conf.PrivacyReg = regs return nil }, }, } func HandleSettingItem(item *model.SettingItem) (bool, error) { if hook, ok := SettingItemHooks[item.Key]; ok { return true, hook.Hook(item) } return false, nil } // func HandleSettingItems(items []model.SettingItem) error { // for i := range items { // if err := HandleSettingItem(&items[i]); err != nil { // return err // } // } // return nil // }