micro-bundle/pkg/db/mysql.go

123 lines
3.2 KiB
Go
Raw Normal View History

2025-02-20 12:40:39 +00:00
package db
import (
"fmt"
"log"
2025-02-20 12:40:39 +00:00
"time"
"github.com/gin-gonic/gin"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"gorm.io/gorm/schema"
"micro-bundle/internal/model"
)
func loadMysqlConn(conn string) *gorm.DB {
var ormLogger logger.Interface
if gin.Mode() == "debug" {
ormLogger = logger.Default.LogMode(logger.Info)
} else {
ormLogger = logger.Default
}
db, err := gorm.Open(mysql.New(mysql.Config{
DSN: conn, // DSN data source name
DefaultStringSize: 256, // string 类型字段的默认长度
DisableDatetimePrecision: true, // 禁用 datetime 精度MySQL 5.6 之前的数据库不支持
DontSupportRenameIndex: true, // 重命名索引时采用删除并新建的方式MySQL 5.7 之前的数据库和 MariaDB 不支持重命名索引
DontSupportRenameColumn: true, // 用 `change` 重命名列MySQL 8 之前的数据库和 MariaDB 不支持重命名列
SkipInitializeWithVersion: false, // 根据版本自动配置
}), &gorm.Config{
Logger: ormLogger,
NamingStrategy: schema.NamingStrategy{
SingularTable: true,
},
DisableForeignKeyConstraintWhenMigrating: true,
})
if err != nil {
panic(err)
}
fmt.Println("[BundleDB] 数据库连接成功, 连接字符串: %s", conn)
2025-02-20 12:40:39 +00:00
sqlDB, _ := db.DB()
sqlDB.SetMaxIdleConns(20) //设置连接池,空闲
sqlDB.SetMaxOpenConns(100) //打开
sqlDB.SetConnMaxLifetime(time.Second * 30)
// Bundle数据库的自动迁移
2025-03-25 08:30:09 +00:00
err = db.AutoMigrate(
&model.BundleProfile{},
&model.BundleOrderRecords{},
2025-03-25 08:31:33 +00:00
&model.ValueAddBundleProfile{},
2025-03-28 01:23:17 +00:00
//&model.ValueAddBundleRecord{}
2025-05-28 01:34:43 +00:00
&model.BundleProfileLang{},
&model.ValueAddService{},
&model.ValueAddServiceLang{},
&model.BundleToValueAddService{},
2025-06-10 06:03:17 +00:00
&model.BundleProfileHistory{},
&model.ValueAddServiceHistory{},
2025-06-10 08:11:50 +00:00
&model.BundleOrderValueAdd{},
2025-06-12 09:51:24 +00:00
&model.BundleExtensionRecords{},
2025-06-13 10:04:31 +00:00
&model.BundleBalance{},
2025-06-15 02:08:40 +00:00
&model.Reconciliation{},
2025-03-28 01:23:17 +00:00
)
2025-05-28 01:34:43 +00:00
2025-02-20 12:40:39 +00:00
if err != nil {
// return nil
panic(err)
2025-02-20 12:40:39 +00:00
}
return db
}
// TaskBench数据库的自动迁移函数
func loadTaskBenchMysqlConn(conn string) *gorm.DB {
var ormLogger logger.Interface
if gin.Mode() == "debug" {
ormLogger = logger.Default.LogMode(logger.Info)
} else {
ormLogger = logger.Default
}
db, err := gorm.Open(mysql.New(mysql.Config{
DSN: conn,
DefaultStringSize: 256,
DisableDatetimePrecision: true,
DontSupportRenameIndex: true,
DontSupportRenameColumn: true,
SkipInitializeWithVersion: false,
}), &gorm.Config{
Logger: ormLogger,
NamingStrategy: schema.NamingStrategy{
SingularTable: true,
},
DisableForeignKeyConstraintWhenMigrating: true,
})
if err != nil {
panic(err)
}
sqlDB, _ := db.DB()
sqlDB.SetMaxIdleConns(20)
sqlDB.SetMaxOpenConns(100)
sqlDB.SetConnMaxLifetime(time.Second * 30)
// 自动迁移任务管理台相关数据库表
err = db.AutoMigrate(
&model.TaskManagement{},
&model.TaskAssignRecords{},
)
if err != nil {
log.Printf("[TaskBenchDB] 数据库迁移失败: %v", err)
panic(err)
}
log.Printf("[TaskBenchDB] 数据库迁移成功,已创建表: task_management, task_assign_records")
return db
}
2025-02-20 12:40:39 +00:00
func DBMigration() {
}
func addColumn(dst interface{}, column string) {
return
}