package Managers import ( "AnP/Models" "AnP/Utils" ) var default_settings map[string]any = map[string]any{ "default_settings_files": []any{ "/Public/json/AnP.settings.json", "/JSON/AnP.settings.json", "/Public/json/AnP.go.settings.json", "/JSON/AnP.go.settings.json", "AnP.go.settings.json", }, "default_secrets_files": []any{ "/Public/json/AnP.secrets.json", "/JSON/AnP.secrets.json", "/Public/json/AnP.go.secrets.json", "/JSON/AnP.go.secrets.json", "AnP.go.secrets.json", }, } type SettingsManager struct { anp Models.AnPModel inputs map[string]any settings map[string]any secrets map[string]any } func NewSettingsManager(anp Models.AnPModel, inputs any) SettingsManager { var settings SettingsManager = SettingsManager{ anp: anp, inputs: Utils.GetDictionary(inputs, true), settings: map[string]any{}, secrets: map[string]any{}, } for _, key := range []string{"default_settings_files", "default_settings", "settings_files", "settings"} { settings.Add(settings.Get(key, nil, nil), true, "AnP") } for _, key := range []string{"default_secrets_files", "default_secrets", "secrets_files", "secrets"} { settings.AddSecrets(settings.Get(key, nil, nil), true, "AnP") } return settings } func GetSettings[T any](_self SettingsManager, keys any, inputs any, _default *T) T { return Utils.GetValue(keys, []any{inputs, _self.secrets, _self.inputs, _self.settings, default_settings}, _default) } func (_self SettingsManager) Get(keys any, inputs any, _default *any) any { return GetSettings(_self, keys, inputs, _default) } func (_self *SettingsManager) Add(inputs any, overwrite bool, header string) { _self.anp.Request.LoadJSON(inputs, func(data any) { for key, value := range Utils.Get[map[string]any](data, nil) { if !Utils.IsAnPKey(key, header) { _, exists := _self.settings[key] if overwrite || !exists { _self.settings[key] = value } } } }, true) } func (_self *SettingsManager) AddSecrets(inputs any, overwrite bool, header string) { _self.anp.Request.LoadJSON(inputs, func(data any) { for key, value := range Utils.Get[map[string]any](data, nil) { if !Utils.IsAnPKey(key, header) { _, exists := _self.secrets[key] if overwrite || !exists { _self.secrets[key] = value } } } }, true) }