mh_goadmin_server/common/database/mysql_drive.go

72 lines
1.5 KiB
Go
Raw Normal View History

2023-09-16 02:56:39 +00:00
package database
import (
"database/sql"
2023-10-14 08:19:04 +00:00
logx "go-admin/logger"
2023-09-16 02:56:39 +00:00
"log"
"os"
"time"
"gorm.io/driver/mysql"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"gorm.io/gorm/schema"
"go-admin/common/config"
"go-admin/common/global"
"go-admin/tools"
toolsConfig "go-admin/tools/config"
)
type Mysql struct {
}
func (e *Mysql) Setup() {
global.Source = e.GetConnect()
2023-10-14 08:19:04 +00:00
logx.Info(tools.Green(global.Source))
2023-09-16 02:56:39 +00:00
db, err := sql.Open("mysql", global.Source)
if err != nil {
2023-10-14 08:19:04 +00:00
logx.Fatal(tools.Red(e.GetDriver()+" connect error :"), err)
2023-09-16 02:56:39 +00:00
}
global.Cfg.SetDb(&config.DBConfig{
Driver: "mysql",
DB: db,
})
global.Eloquent, err = e.Open(db, &gorm.Config{
NamingStrategy: schema.NamingStrategy{
SingularTable: true,
},
})
if err != nil {
2023-10-14 08:19:04 +00:00
logx.Fatal(tools.Red(e.GetDriver()+" connect error :"), err)
2023-09-16 02:56:39 +00:00
} else {
2023-10-14 08:19:04 +00:00
logx.Info(tools.Green(e.GetDriver() + " connect success !"))
2023-09-16 02:56:39 +00:00
}
if global.Eloquent.Error != nil {
2023-10-14 08:19:04 +00:00
logx.Fatal(tools.Red(" database error :"), global.Eloquent.Error)
2023-09-16 02:56:39 +00:00
}
if toolsConfig.LoggerConfig.EnabledDB {
global.Eloquent.Logger = logger.New(log.New(os.Stdout, "\r\n", log.LstdFlags), logger.Config{
SlowThreshold: time.Second,
Colorful: true,
LogLevel: logger.Info,
})
}
}
// 打开数据库连接
func (e *Mysql) Open(db *sql.DB, cfg *gorm.Config) (*gorm.DB, error) {
return gorm.Open(mysql.New(mysql.Config{Conn: db}), cfg)
}
// 获取数据库连接
func (e *Mysql) GetConnect() string {
return toolsConfig.DatabaseConfig.Source
}
func (e *Mysql) GetDriver() string {
return toolsConfig.DatabaseConfig.Driver
}