Files
spider/internal/config/config.go
toom1996 cab1023ba1 update
2026-08-10 20:47:34 +08:00

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
}