新增配置管理功能及多存储支持
- 添加管理员端 API,用于获取和更新完整配置。 - 添加公共端 API,用于获取非敏感配置信息。 - 增加本地存储(LocalStorage)、S3(S3Storage)、和 WebDAV(WebDAVStorage)存储类型的实现。 - 支持热更新存储配置和保存配置文件至磁盘。 - 更新 Swagger 文档以包含新接口定义。
This commit is contained in:
@@ -2,6 +2,7 @@ package config
|
||||
|
||||
import (
|
||||
"os"
|
||||
"sync"
|
||||
|
||||
"gopkg.in/yaml.v3"
|
||||
)
|
||||
@@ -64,9 +65,16 @@ type DatabaseConfig struct {
|
||||
Path string `yaml:"path"`
|
||||
}
|
||||
|
||||
var GlobalConfig *Config
|
||||
var (
|
||||
GlobalConfig *Config
|
||||
ConfigPath string
|
||||
configLock sync.RWMutex
|
||||
)
|
||||
|
||||
func LoadConfig(path string) error {
|
||||
configLock.Lock()
|
||||
defer configLock.Unlock()
|
||||
|
||||
data, err := os.ReadFile(path)
|
||||
if err != nil {
|
||||
return err
|
||||
@@ -78,5 +86,24 @@ func LoadConfig(path string) error {
|
||||
}
|
||||
|
||||
GlobalConfig = &cfg
|
||||
ConfigPath = path
|
||||
return nil
|
||||
}
|
||||
|
||||
func SaveConfig() error {
|
||||
configLock.RLock()
|
||||
defer configLock.RUnlock()
|
||||
|
||||
data, err := yaml.Marshal(GlobalConfig)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
return os.WriteFile(ConfigPath, data, 0644)
|
||||
}
|
||||
|
||||
func UpdateGlobalConfig(cfg *Config) {
|
||||
configLock.Lock()
|
||||
defer configLock.Unlock()
|
||||
GlobalConfig = cfg
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user