60 lines
1.2 KiB
Go
60 lines
1.2 KiB
Go
package config
|
|
|
|
import (
|
|
"base-go-v2/internal/types"
|
|
"github.com/spf13/viper"
|
|
"time"
|
|
)
|
|
|
|
// App 全局唯一导出配置实例,初始化默认值
|
|
var App = &types.AppConfig{
|
|
Server: types.AppConfig{}.Server,
|
|
JWT: types.AppConfig{}.JWT,
|
|
Db: types.AppConfig{}.Db,
|
|
Snowflake: types.AppConfig{}.Snowflake,
|
|
}
|
|
|
|
// 给部分字段设置默认值
|
|
func init() {
|
|
App.Server.Port = 8080
|
|
App.JWT.Secret = "default_secret"
|
|
App.JWT.Expiry = time.Hour
|
|
|
|
// 数据库只给连接池默认值
|
|
App.Db.MaxOpenConns = 10
|
|
App.Db.MaxIdleConns = 5
|
|
App.Db.ConnMaxLifetime = 30 * time.Minute
|
|
|
|
App.Snowflake.DatacenterID = 1
|
|
App.Snowflake.WorkerID = 1
|
|
}
|
|
|
|
// InitApplicationConfig 初始化配置
|
|
func InitApplicationConfig(configPath string) error {
|
|
v := viper.New()
|
|
v.SetConfigFile(configPath)
|
|
v.SetConfigType("yaml")
|
|
|
|
if err := v.ReadInConfig(); err != nil {
|
|
return err
|
|
}
|
|
|
|
if err := v.UnmarshalKey("server", &App.Server); err != nil {
|
|
return err
|
|
}
|
|
|
|
if err := v.UnmarshalKey("jwt", &App.JWT); err != nil {
|
|
return err
|
|
}
|
|
|
|
if err := v.UnmarshalKey("snowflake", &App.Snowflake); err != nil {
|
|
return err
|
|
}
|
|
|
|
if err := v.UnmarshalKey("db", &App.Db); err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|