54 lines
1.2 KiB
Go
54 lines
1.2 KiB
Go
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
|
|
}
|