2024-07-24 10:28:45 +08:00
|
|
|
package main
|
|
|
|
|
2024-08-02 15:18:11 +08:00
|
|
|
import (
|
|
|
|
"encoding/json"
|
|
|
|
"os"
|
|
|
|
"sync"
|
|
|
|
)
|
2024-07-24 10:28:45 +08:00
|
|
|
|
2024-08-02 15:18:11 +08:00
|
|
|
const (
|
|
|
|
FILE_CONFIG string = "./config.json"
|
|
|
|
)
|
|
|
|
|
|
|
|
type Config struct {
|
|
|
|
CfgJson
|
|
|
|
sync.Mutex
|
|
|
|
}
|
|
|
|
|
|
|
|
type CfgJson struct {
|
|
|
|
Album CfgAlbum `json:"album,omitempty"`
|
2024-07-24 10:28:45 +08:00
|
|
|
}
|
|
|
|
|
2024-08-02 15:18:11 +08:00
|
|
|
type CfgAlbum struct {
|
2024-07-24 10:28:45 +08:00
|
|
|
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 {
|
2024-08-02 15:18:11 +08:00
|
|
|
my.Read()
|
2024-07-24 10:28:45 +08:00
|
|
|
return my
|
|
|
|
}
|
|
|
|
|
2024-08-02 15:18:11 +08:00
|
|
|
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()
|
2024-07-24 10:28:45 +08:00
|
|
|
|
2024-08-02 15:18:11 +08:00
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
return os.WriteFile(FILE_CONFIG, b, 0644)
|
|
|
|
}
|