package main import ( "encoding/json" "os" "sync" ) const ( FILE_CONFIG string = "./config.json" ) type Config struct { CfgJson sync.Mutex } type CfgJson struct { Album CfgAlbum `json:"album,omitempty"` } type CfgAlbum struct { Folder []AlbumFolder `json:"folder,omitempty"` Virtual map[string]interface{} `json:"virtual,omitempty"` } type AlbumFolder struct { Name string `json:"name,omitempty"` Path string `json:"path"` } func (my *Config) Init() *Config { my.Read() return my } func (my *Config) Read() (*CfgJson, error) { b, err := os.ReadFile(FILE_CONFIG) if err != nil { return nil, err } my.Mutex.Lock() err = json.Unmarshal(b, &my.CfgJson) my.Mutex.Unlock() if err != nil { return nil, err } return &my.CfgJson, nil } func (my *Config) Write(cfg *CfgJson) error { if cfg != nil { my.Mutex.Lock() my.CfgJson = *cfg } else { my.Mutex.Lock() } b, err := json.Marshal(&my.CfgJson) my.Mutex.Unlock() if err != nil { return err } return os.WriteFile(FILE_CONFIG, b, 0644) }