plugai_updsrv/pkg/config/config.go

65 lines
2.8 KiB
Go

package config
import (
"encoding/json"
"intent-system/pkg/itypes"
"io/ioutil"
"os"
"path"
"github.com/civet148/log"
)
const (
strConfName = "config.json"
RunConfigName = "system-backend"
)
type Config struct {
Version string `json:"version"` //版本号
DSN string `json:"dsn" toml:"dsn" db:"dsn" cli:"dsn"` //数据库连接字符串
Debug bool `json:"debug" toml:"debug" db:"debug" cli:"debug"` //开启debug模式
HttpAddr string `json:"http_addr" toml:"http_addr" db:"http_addr" cli:"http-addr"` //监听地址
Domain string `json:"domain" toml:"domain" db:"domain" cli:"domain"` //域名URL配置
Static string `json:"static" toml:"static" db:"static" cli:"static"` //静态页面文件路径
ImagePrefix string `json:"image_prefix" toml:"image_prefix" db:"image_prefix" cli:"image-prefix"` //用户端图片访问域名
ImagePath string `json:"image_path" toml:"image_path" db:"image_path" cli:"image-path"` //图片存储路径
GatewayUrl string `json:"gateway_url" toml:"gateway_url" db:"gateway_url" cli:"gateway-url"` //网关地址URL
GatewayKey string `json:"gateway_key" toml:"gateway_key" db:"gateway_key" cli:"gateway-key"` //网关访问Key
GatewaySecret string `json:"gateway_secret" toml:"gateway_secret" db:"gateway_secret" cli:"gateway-secret"` //网关访问密码
Postgresql string `json:"postgresql" toml:"postgresql" db:"postgresql" cli:"pg"` //Postgresql数据库连接字符串
SubCron string `json:"sub_cron" toml:"sub_cron" db:"sub_cron" cli:"sub-cron"` //订阅邮件定时任务
}
var strFilePath = path.Join(itypes.DefaultConfigHome, strConfName)
func (c *Config) Save() (err error) {
var data []byte
strConfigPath := itypes.DefaultConfigHome
if err = os.MkdirAll(strConfigPath, os.ModePerm); err != nil {
return log.Errorf("make dir [%s] error [%s]", strConfigPath, err.Error())
}
data, err = json.Marshal(c)
if err != nil {
return log.Errorf("marshal json error: %s", err.Error())
}
err = ioutil.WriteFile(strFilePath, data, os.ModePerm)
if err != nil {
return log.Errorf("write to file %s error: %s", strFilePath, err.Error())
}
return nil
}
func (c *Config) Load() (err error) {
var data []byte
data, err = ioutil.ReadFile(strFilePath)
if err != nil {
return log.Errorf("read file %s error: %s", strFilePath, err.Error())
}
err = json.Unmarshal(data, c)
if err != nil {
return log.Errorf("unmarshal error: %s", err.Error())
}
return nil
}