package config import ( "fmt" "gateway/utils" "os" "github.com/joho/godotenv" ) func init() { // 加载 .env 文件 if err := godotenv.Load(); err != nil { utils.Logger.Warnf("未找到 .env 文件: %v", err) } } // DBConfig 数据库配置结构 type DBConfig struct { Host string Port string User string Password string DBName string } // GetDBConfig 获取数据库配置 func GetDBConfig() *DBConfig { // 确保已加载环境变量 godotenv.Load() return &DBConfig{ Host: getEnvOrDefault("DB_HOST", "localhost"), Port: getEnvOrDefault("DB_PORT", "3306"), User: getEnvOrDefault("DB_USER", "root"), Password: getEnvOrDefault("DB_PASSWORD", "password"), DBName: getEnvOrDefault("DB_NAME", "family"), } } // GetDSN 获取数据库连接字符串 func (c *DBConfig) GetDSN() string { return fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local", c.User, c.Password, c.Host, c.Port, c.DBName) } // getEnvOrDefault 获取环境变量,如果不存在则返回默认值 func getEnvOrDefault(key, defaultValue string) string { if value := os.Getenv(key); value != "" { return value } return defaultValue }