62 lines
840 B
Go
62 lines
840 B
Go
package store
|
|
|
|
import (
|
|
"encoding/json"
|
|
"github.com/rs/zerolog/log"
|
|
"os"
|
|
)
|
|
|
|
const name = "go2rtc.json"
|
|
|
|
var store map[string]any
|
|
|
|
func load() {
|
|
data, _ := os.ReadFile(name)
|
|
if data != nil {
|
|
if err := json.Unmarshal(data, &store); err != nil {
|
|
// TODO: log
|
|
log.Warn().Err(err).Msg("[app] read storage")
|
|
}
|
|
}
|
|
|
|
if store == nil {
|
|
store = make(map[string]any)
|
|
}
|
|
}
|
|
|
|
func save() error {
|
|
data, err := json.Marshal(store)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
return os.WriteFile(name, data, 0644)
|
|
}
|
|
|
|
func GetRaw(key string) any {
|
|
if store == nil {
|
|
load()
|
|
}
|
|
|
|
return store[key]
|
|
}
|
|
|
|
func GetDict(key string) map[string]any {
|
|
raw := GetRaw(key)
|
|
if raw != nil {
|
|
return raw.(map[string]any)
|
|
}
|
|
|
|
return make(map[string]any)
|
|
}
|
|
|
|
func Set(key string, v any) error {
|
|
if store == nil {
|
|
load()
|
|
}
|
|
|
|
store[key] = v
|
|
|
|
return save()
|
|
}
|