Files
mp-qvyun/backend/conf/config.go
2024-11-28 16:15:08 +08:00

83 lines
1.9 KiB
Go

package conf
import (
"fmt"
"github.com/pkg/errors"
log "github.com/sirupsen/logrus"
"github.com/spf13/viper"
)
var C *Config
// WechatAppID = "wx45745a8c51091ae0"
// WechatAppSecret = "2ab33bc79d9b47efa4abef19d66e1977"
// WechatToken = "W8Xhw5TivYBgY"
// WechatAesKey = "F6AqCxAV4W1eCrY6llJ2zapphKK49CQN3RgtPDrjhnI"
type Config struct {
Debug bool `mapstructure:"debug"`
Port uint `mapstructure:"port"`
Database Database `mapstructure:"database"`
Wechat Wechat `mapstructure:"wechat"`
}
type Database struct {
Database string `mapstructure:"database"`
Username string `mapstructure:"username"`
Password string `mapstructure:"password"`
Host string `mapstructure:"host"`
Port uint `mapstructure:"port"`
SslMode string `mapstructure:"ssl_mode"`
TimeZone string `mapstructure:"time_zone"`
}
func (m Database) DSN() string {
tpl := "host=%s port=%d user=%s password=%s dbname=%s sslmode=%s TimeZone=%s"
if m.Username == "" {
m.Username = "postgres"
}
if m.Port == 0 {
m.Port = 5432
}
if m.SslMode == "" {
m.SslMode = "disable"
}
if m.TimeZone == "" {
m.TimeZone = "Asia/Shanghai"
}
return fmt.Sprintf(tpl, m.Host, m.Port, m.Username, m.Password, m.Database, m.SslMode, m.TimeZone)
}
type Wechat struct {
AppID string `mapstructure:"app_id"`
AppSecret string `mapstructure:"app_secret"`
Token string `mapstructure:"token"`
AesKey string `mapstructure:"aes_key"`
}
func Load(file string) error {
viper.SetConfigType("yaml")
if file != "" {
viper.SetConfigFile(file)
} else {
viper.SetConfigName("config")
viper.AddConfigPath(".")
}
log.Infof("load config file")
if err := viper.ReadInConfig(); err != nil {
return errors.Wrap(err, "read config file")
}
log.Infof("use config file: %s", viper.ConfigFileUsed())
if err := viper.Unmarshal(&C); err != nil {
return errors.Wrap(err, "unmarshal config")
}
return nil
}