forked from lxh/go-wxhelper
50 lines
1.1 KiB
Go
50 lines
1.1 KiB
Go
package database
|
|
|
|
import (
|
|
"gitee.ltd/lxh/logger"
|
|
"gitee.ltd/lxh/logger/log"
|
|
"gorm.io/driver/mysql"
|
|
"gorm.io/driver/postgres"
|
|
"gorm.io/gorm"
|
|
"os"
|
|
"strconv"
|
|
"wechat-robot/config"
|
|
)
|
|
|
|
// Client 客户端
|
|
var Client *gorm.DB
|
|
|
|
// Init
|
|
// @description: 初始化数据库连接
|
|
func Init() {
|
|
var dialector gorm.Dialector
|
|
switch config.Conf.Database.Type {
|
|
case "mysql":
|
|
// MySQL
|
|
dialector = mysql.Open(config.Conf.Database.GetMysqlDSN())
|
|
case "postgresql":
|
|
// PostgreSQL
|
|
dialector = postgres.Open(config.Conf.Database.GetPostgreSQLDSN())
|
|
default:
|
|
log.Panic("未配置数据库或数据库类型不支持")
|
|
}
|
|
|
|
// gorm 配置
|
|
gormConfig := gorm.Config{
|
|
DisableForeignKeyConstraintWhenMigrating: true,
|
|
}
|
|
// 是否开启调试模式
|
|
if flag, _ := strconv.ParseBool(os.Getenv("GORM_DEBUG")); flag {
|
|
gormConfig.Logger = logger.DefaultGormLogger()
|
|
}
|
|
|
|
// 初始化连接
|
|
conn, err := gorm.Open(dialector, &gormConfig)
|
|
if err != nil {
|
|
log.Panicf("数据库连接初始化失败: %v", err)
|
|
} else {
|
|
log.Debug("数据库连接初始化成功")
|
|
}
|
|
Client = conn
|
|
}
|