81 lines
2.1 KiB
Go
81 lines
2.1 KiB
Go
package Managers
|
|
|
|
import (
|
|
"AnP/Models"
|
|
"AnP/Utils"
|
|
)
|
|
|
|
var default_settings map[string]any = map[string]any{
|
|
"default_settings_files": []any{
|
|
"/Public/json/AnP.go.settings.json",
|
|
"/JSON/AnP.go.settings.json",
|
|
"AnP.go.settings.json",
|
|
},
|
|
"default_secrets_files": []any{
|
|
"/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)
|
|
}
|