43 lines
1012 B
Go
43 lines
1012 B
Go
package utils_gorm
|
|
|
|
import (
|
|
"ai_scheduler/internal/config"
|
|
"database/sql"
|
|
"fmt"
|
|
"time"
|
|
|
|
"gorm.io/driver/mysql"
|
|
"gorm.io/gorm"
|
|
)
|
|
|
|
func DBConn(c config.DB) (*gorm.DB, func()) {
|
|
mysqlConn, err := sql.Open(c.Driver, c.Source)
|
|
gormDB, err := gorm.Open(
|
|
mysql.New(mysql.Config{Conn: mysqlConn}),
|
|
)
|
|
|
|
gormDB.Logger = NewCustomLogger(gormDB)
|
|
if err != nil {
|
|
panic("failed to connect database")
|
|
}
|
|
sqlDB, err := gormDB.DB()
|
|
|
|
// SetMaxIdleConns sets the maximum number of connections in the idle connection pool.
|
|
sqlDB.SetMaxIdleConns(int(c.MaxIdle))
|
|
|
|
// SetMaxOpenConns sets the maximum number of open connections to the database.
|
|
sqlDB.SetMaxOpenConns(int(c.MaxLifetime))
|
|
|
|
// SetConnMaxLifetime sets the maximum amount of time a connection may be reused.
|
|
sqlDB.SetConnMaxLifetime(time.Hour)
|
|
|
|
return gormDB, func() {
|
|
if mysqlConn != nil {
|
|
fmt.Println("关闭 physicalGoodsDB")
|
|
if err := mysqlConn.Close(); err != nil {
|
|
fmt.Println("关闭 physicalGoodsDB 失败:", err)
|
|
}
|
|
}
|
|
}
|
|
}
|