53 lines
1.3 KiB
Go
53 lines
1.3 KiB
Go
package config
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/spf13/viper"
|
|
)
|
|
|
|
// GlobalConfig 全局配置实例
|
|
var GlobalConfig Config
|
|
|
|
type Config struct {
|
|
App AppConfig `mapstructure:"app"`
|
|
Database DatabaseConfig `mapstructure:"database"`
|
|
}
|
|
|
|
type AppConfig struct {
|
|
MaxCo int `mapstructure:"max_co"`
|
|
Debug bool `mapstructure:"debug"` // 新增 Debug 字段
|
|
}
|
|
|
|
type DatabaseConfig struct {
|
|
DSN string `mapstructure:"dsn"`
|
|
MaxOpenConns int `mapstructure:"max_open_conns"`
|
|
MaxIdleConns int `mapstructure:"max_idle_conns"`
|
|
ConnMaxLifetime int `mapstructure:"conn_max_lifetime"`
|
|
ConnMaxIdleTime int `mapstructure:"conn_max_idle_time"`
|
|
}
|
|
|
|
// InitConfig 初始化并读取 YAML 配置文件
|
|
func InitConfig(cfgFile string) error {
|
|
if cfgFile != "" {
|
|
// 如果命令行指定了配置文件路径
|
|
viper.SetConfigFile(cfgFile)
|
|
} else {
|
|
// 默认在当前目录下查找 config.yaml
|
|
viper.AddConfigPath(".")
|
|
viper.SetConfigType("yaml")
|
|
viper.SetConfigName("config")
|
|
}
|
|
|
|
if err := viper.ReadInConfig(); err != nil {
|
|
return fmt.Errorf("读取配置文件失败: %w", err)
|
|
}
|
|
|
|
// 解析到结构体
|
|
if err := viper.Unmarshal(&GlobalConfig); err != nil {
|
|
return fmt.Errorf("解析配置文件结构失败: %w", err)
|
|
}
|
|
|
|
return nil
|
|
}
|