u
This commit is contained in:
1 parent
835958886e
commit
d04d22723b
155 files changed
+543
-9793
No files matched your search
@@ -0,0 +1,110 @@
|
||||
package conf
|
||||
|
||||
import (
|
||||
"os"
|
||||
"path/filepath"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/spf13/viper"
|
||||
)
|
||||
|
||||
var (
|
||||
conf *Config
|
||||
once sync.Once
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
Env string
|
||||
|
||||
Server ServerConfig `mapstructure:"server" yaml:"server"`
|
||||
JWT JwtConfig `mapstructure:"jwt" yaml:"jwt"`
|
||||
Snowflake SnowflakeConfig `mapstructure:"snowflake" yaml:"snowflake"`
|
||||
Pgsql PgsqlConfig `mapstructure:"pgsql" yaml:"pgsql"`
|
||||
Log LogConfig `mapstructure:"log" yaml:"log"`
|
||||
Wx WxConfig `mapstructure:"wx" yaml:"wx"`
|
||||
Redis RedisConfig `mapstructure:"redis" yaml:"redis"`
|
||||
}
|
||||
|
||||
type ServerConfig struct {
|
||||
Port string `mapstructure:"port" yaml:"port"`
|
||||
BaseUrl string `mapstructure:"base_url" yaml:"base_url"` // 下划线
|
||||
WsUrl string `mapstructure:"ws_url" yaml:"ws_url"`
|
||||
}
|
||||
|
||||
type JwtConfig struct {
|
||||
Secret string `mapstructure:"secret" yaml:"secret"`
|
||||
AccessExpiry time.Duration `mapstructure:"access_expiry" yaml:"access_expiry"`
|
||||
}
|
||||
|
||||
type SnowflakeConfig struct {
|
||||
DatacenterID uint16 `mapstructure:"datacenter_id" yaml:"datacenter_id"`
|
||||
WorkerID uint16 `mapstructure:"worker_id" yaml:"worker_id"`
|
||||
}
|
||||
|
||||
type PgsqlConfig struct {
|
||||
Host string `mapstructure:"host" yaml:"host"`
|
||||
Port int `mapstructure:"port" yaml:"port"`
|
||||
User string `mapstructure:"user" yaml:"user"`
|
||||
Password string `mapstructure:"password" yaml:"password"`
|
||||
Dbname string `mapstructure:"dbname" yaml:"dbname"`
|
||||
SllMode bool `mapstructure:"sll_mode" yaml:"sll_mode"`
|
||||
TimeZone string `mapstructure:"timezone" yaml:"timezone"`
|
||||
MaxOpenConns int32 `mapstructure:"max_open_conns" yaml:"max_open_conns"`
|
||||
MaxIdleConns int32 `mapstructure:"max_idle_conns" yaml:"max_idle_conns"`
|
||||
ConnMaxLifetime time.Duration `mapstructure:"conn_max_lifetime" yaml:"conn_max_lifetime"`
|
||||
}
|
||||
|
||||
type LogConfig struct {
|
||||
Level string `mapstructure:"level" yaml:"level"`
|
||||
Dir string `mapstructure:"dir" yaml:"dir"`
|
||||
MaxSize int `mapstructure:"max_size" yaml:"max_size"`
|
||||
MaxBackups int `mapstructure:"max_backups" yaml:"max_backups"`
|
||||
MaxAge int `mapstructure:"max_age" yaml:"max_age"`
|
||||
Compress bool `mapstructure:"compress" yaml:"compress"`
|
||||
}
|
||||
|
||||
type WxConfig struct {
|
||||
AppId string `mapstructure:"app_id" yaml:"app_id"`
|
||||
AppSecret string `mapstructure:"app_secret" yaml:"app_secret"`
|
||||
}
|
||||
|
||||
type RedisConfig struct {
|
||||
Host string `mapstructure:"host" yaml:"host"`
|
||||
Port int `mapstructure:"port" yaml:"port"`
|
||||
Db int `mapstructure:"db" yaml:"db"`
|
||||
Password string `mapstructure:"password" yaml:"password"`
|
||||
}
|
||||
|
||||
func GetConf() *Config {
|
||||
once.Do(initConf)
|
||||
return conf
|
||||
}
|
||||
|
||||
func initConf() {
|
||||
prefix := "conf"
|
||||
confFileRelPath := filepath.Join(prefix, filepath.Join(GetEnv(), "conf.yaml"))
|
||||
|
||||
v := viper.New()
|
||||
v.SetConfigFile(confFileRelPath)
|
||||
v.SetConfigType("yaml")
|
||||
|
||||
if err := v.ReadInConfig(); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
conf = new(Config)
|
||||
if err := v.Unmarshal(conf); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
conf.Env = GetEnv()
|
||||
}
|
||||
|
||||
func GetEnv() string {
|
||||
e := os.Getenv("GO_ENV")
|
||||
if len(e) == 0 {
|
||||
return "dev"
|
||||
}
|
||||
return e
|
||||
}
|
||||
Reference in new issue
Block a user