micro-bundle/pkg/db/mysql.go
cjy 019197fc15 feat: 新增任务台功能
新增任务管理台功能
2025-09-03 15:51:35 +08:00

123 lines
3.2 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package db
import (
"fmt"
"log"
"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)
sqlDB, _ := db.DB()
sqlDB.SetMaxIdleConns(20) //设置连接池,空闲
sqlDB.SetMaxOpenConns(100) //打开
sqlDB.SetConnMaxLifetime(time.Second * 30)
// Bundle数据库的自动迁移
err = db.AutoMigrate(
&model.BundleProfile{},
&model.BundleOrderRecords{},
&model.ValueAddBundleProfile{},
//&model.ValueAddBundleRecord{}
&model.BundleProfileLang{},
&model.ValueAddService{},
&model.ValueAddServiceLang{},
&model.BundleToValueAddService{},
&model.BundleProfileHistory{},
&model.ValueAddServiceHistory{},
&model.BundleOrderValueAdd{},
&model.BundleExtensionRecords{},
&model.BundleBalance{},
&model.Reconciliation{},
)
if err != nil {
// return nil
panic(err)
}
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
}
func DBMigration() {
}
func addColumn(dst interface{}, column string) {
return
}