diff options
Diffstat (limited to 'system/db')
-rw-r--r-- | system/db/cache.go | 35 | ||||
-rw-r--r-- | system/db/config.go | 40 |
2 files changed, 41 insertions, 34 deletions
diff --git a/system/db/cache.go b/system/db/cache.go index 5f2dd03..30ecf5a 100644 --- a/system/db/cache.go +++ b/system/db/cache.go @@ -2,10 +2,8 @@ package db import ( "encoding/base64" - "encoding/json" "fmt" "net/http" - "net/url" "strings" "time" ) @@ -39,41 +37,10 @@ func NewEtag() string { // InvalidateCache sets a new Etag for http responses func InvalidateCache() error { - kv := make(map[string]interface{}) - - c, err := ConfigAll() + err := PutConfig("etag", NewEtag()) if err != nil { return err } - err = json.Unmarshal(c, &kv) - if err != nil { - return err - } - - kv["etag"] = NewEtag() - - data := make(url.Values) - for k, v := range kv { - switch v.(type) { - case string: - data.Set(k, v.(string)) - case []string: - vv := v.([]string) - for i := range vv { - if i == 0 { - data.Set(k, vv[i]) - } else { - data.Add(k, vv[i]) - } - } - } - } - - err = SetConfig(data) - if err != nil { - - } - return nil } diff --git a/system/db/config.go b/system/db/config.go index b5a07e4..ef3c382 100644 --- a/system/db/config.go +++ b/system/db/config.go @@ -117,7 +117,47 @@ func ConfigAll() ([]byte, error) { return val.Bytes(), nil } +// PutConfig updates a single k/v in the config +func PutConfig(key string, value interface{}) error { + kv := make(map[string]interface{}) + + c, err := ConfigAll() + if err != nil { + return err + } + + err = json.Unmarshal(c, &kv) + if err != nil { + return err + } + + data := make(url.Values) + for k, v := range kv { + switch v.(type) { + case string: + data.Set(k, v.(string)) + case []string: + vv := v.([]string) + for i := range vv { + if i == 0 { + data.Set(k, vv[i]) + } else { + data.Add(k, vv[i]) + } + } + } + } + + err = SetConfig(data) + if err != nil { + return err + } + + return nil +} + // ConfigCache is a in-memory cache of the Configs for quicker lookups +// 'key' is the JSON tag associated with the config field func ConfigCache(key string) string { return configCache.Get(key) } |