jdysya 2ef2f53ce6 feat(gateway): 更新数据库连接和模型
- 从 SQLite 切换到 MySQL 数据库
- 更新 Region 和 User 模型,增加字段和关联
- 添加数据库连接池配置
- 实现自动迁移表结构
2025-02-16 23:49:27 +08:00

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
}