Files
web_ylsa/api_iris/database/database.go
2025-07-11 16:54:11 +08:00

86 lines
1.7 KiB
Go

package database
import (
"github.com/sirupsen/logrus"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"main/config"
"main/model"
"sync"
)
var instance *MysqlConnectionPool
var once sync.Once
var db *gorm.DB
var err error
// GetInstance 获取数据库连接池
func GetInstance() *MysqlConnectionPool {
once.Do(func() {
instance = &MysqlConnectionPool{}
})
return instance
}
// InitDataPool 数据库初始化连接
func (m *MysqlConnectionPool) InitDataPool() (isSuccess bool) {
dbConfig := config.Config.Database
if dbConfig.Prd {
db, err = gorm.Open(mysql.Open(dbConfig.Dsn), &gorm.Config{})
} else {
db, err = gorm.Open(mysql.Open(dbConfig.Dsn), &gorm.Config{
Logger: logger.Default.LogMode(logger.Info),
})
}
if err != nil {
logrus.Errorln("数据库配置失败:", err)
return false
}
return true
}
// GetMysqlDb 获取数据库连接
func (m *MysqlConnectionPool) GetMysqlDb() (dbCon *gorm.DB) {
return db
}
// UpdateDbStruct 数据库数据结构更新
func UpdateDbStruct() error {
err = db.AutoMigrate(
&model.Logs{},
&model.Weather{},
&model.DayKeys{},
&model.JwtKeys{},
&model.IpsLocation{},
&model.User{},
&model.Userinfo{},
&model.UserAction{},
&model.UserAutoLogin{},
&model.LogFileDealLog{},
&model.RunningCrontab{},
&model.Balances{},
&model.BalanceLogs{},
&model.UserNotes{},
&model.BackgammonRoom{},
&model.SysInfo{},
&model.SysInfoUpdateLog{},
&model.ChessStatus{},
&model.ChessStatusLog{},
&model.Menus{},
&model.SysIcons{},
&model.SysSettings{},
&model.SysError{},
&model.Sudoku{},
&model.SudokuStatus{},
&model.SysLogs{},
)
if err != nil {
logrus.Errorln("数据库自动迁移失败:", err)
}
return err
}
type MysqlConnectionPool struct {
}