diff options
Diffstat (limited to 'system/db')
-rw-r--r-- | system/db/config.go | 36 | ||||
-rw-r--r-- | system/db/init.go | 17 |
2 files changed, 39 insertions, 14 deletions
diff --git a/system/db/config.go b/system/db/config.go index f1d1215..ecddd54 100644 --- a/system/db/config.go +++ b/system/db/config.go @@ -169,3 +169,39 @@ func PutConfig(key string, value interface{}) error { func ConfigCache(key string) interface{} { return configCache.Get(key) } + +// LoadCacheConfig loads the config into a cache to be accessed by ConfigCache() +func LoadCacheConfig() error { + c, err := ConfigAll() + if err != nil { + return err + } + + // convert json => map[string]interface{} => url.Values + var kv map[string]interface{} + err = json.Unmarshal(c, &kv) + if err != nil { + return err + } + + data := make(url.Values) + for k, v := range kv { + switch v.(type) { + case []string: + s := v.([]string) + for i := range s { + if i == 0 { + data.Set(k, s[i]) + } + + data.Add(k, s[i]) + } + default: + data.Set(k, fmt.Sprintf("%v", v)) + } + } + + configCache = data + + return nil +} diff --git a/system/db/init.go b/system/db/init.go index 98ba056..769137d 100644 --- a/system/db/init.go +++ b/system/db/init.go @@ -1,10 +1,8 @@ package db import ( - "encoding/json" "log" - "github.com/ponzu-cms/ponzu/system/admin/config" "github.com/ponzu-cms/ponzu/system/item" "github.com/boltdb/bolt" @@ -57,18 +55,9 @@ func Init() { } } - // seed db with configs structure if not present - b := tx.Bucket([]byte("__config")) - if b.Get([]byte("settings")) == nil { - j, err := json.Marshal(&config.Config{}) - if err != nil { - return err - } - - err = b.Put([]byte("settings"), j) - if err != nil { - return err - } + err := LoadCacheConfig() + if err != nil { + return err } clientSecret := ConfigCache("client_secret").(string) |