Files
IUQT/acquaintances/biz/dal/mysql/init.go

54 lines
1.3 KiB
Go

package mysql
import (
"acquaintances/biz/model"
"acquaintances/config"
"fmt"
"github.com/cloudwego/hertz/pkg/common/hlog"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"time"
)
var dsn = fmt.Sprintf("%s:%s@tcp(%s:%s)/%s?charset=utf8mb4&parseTime=True&loc=Local",
config.DbUser,
config.DbPassWord,
config.DbHost,
config.DbPort,
config.DbName,
)
var DB *gorm.DB
func Init() {
var err error
DB, err = gorm.Open(mysql.Open(dsn), &gorm.Config{
SkipDefaultTransaction: true,
PrepareStmt: true,
Logger: logger.Default.LogMode(logger.Info),
})
if err != nil {
hlog.Error(err.Error())
panic(err)
}
// 自动迁移
err = DB.AutoMigrate(model.User{}, model.Country{}, model.UserRelations{}, model.FriendRelationship{}, model.ChatGroupInfo{}, model.GroupUserRelation{}, model.Moment{}, model.MomentImage{}, model.MomentLike{}, model.MomentComment{})
if err != nil {
hlog.Error("AutoMigrate failed: " + err.Error())
return
}
// 连接池配置
sqlDB, _ := DB.DB()
sqlDB.SetMaxIdleConns(10)
sqlDB.SetMaxOpenConns(100)
sqlDB.SetConnMaxLifetime(time.Hour) // 建议设置为 1h 或更低
//内部数据初始化
err = model.InitCountriesTable(DB)
if err != nil {
hlog.Error("Init Countries Table failed: " + err.Error())
return
}
}