65 lines
2.8 KiB
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
|
|
}
|