BlackForest/Config.go
rick.chan 96e1585a54 使用 gTaskMg。
Signed-off-by: rick.chan <cy@haoan119.com>
2024-08-02 15:18:11 +08:00

66 lines
1.0 KiB
Go

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)
}