voucher/internal/data/gorm.go

79 lines
1.5 KiB
Go

package data
import (
"gorm.io/driver/mysql"
"gorm.io/gorm"
"gorm.io/gorm/logger"
"voucher/internal/conf"
)
type GormDb struct {
Client *gorm.DB
}
func NewGormDb(c *conf.Bootstrap) *GormDb {
return &GormDb{
Client: db(c.Data.Db),
}
}
func db(data *conf.Data_Database) *gorm.DB {
gormDB, err := gorm.Open(
mysql.Open(data.Source),
&gorm.Config{
Logger: logger.Default.LogMode(logger.Info),
SkipDefaultTransaction: true,
},
)
if err != nil {
panic("failed to connect database " + err.Error())
}
sqlDB, err := gormDB.DB()
if err != nil {
panic("failed to gormDB " + err.Error())
}
sqlDB.SetMaxIdleConns(500)
sqlDB.SetMaxOpenConns(2000)
return gormDB
}
//func db(data *conf.Data_Database) (*gorm.DB, func()) {
// //mysqlConn, err := sql.Open(data.Driver, data.Source)
//
// gormDB, err := gorm.Open(
// mysql.Open(data.Source),
// //&gorm.Config{
// // Logger: logger.Default.LogMode(logger.Info),
// //},
// )
//
// if err != nil {
// panic("failed to connect database " + err.Error())
// }
//
// sqlDB, err := gormDB.DB()
// if err != nil {
// panic("failed to gormDB " + err.Error())
// }
//
// //sqlDB.SetMaxIdleConns(int(data.MaxIdle))
// sqlDB.SetMaxIdleConns(1000)
// //sqlDB.SetMaxOpenConns(int(data.MaxOpen))
// sqlDB.SetMaxOpenConns(1000)
// //sqlDB.SetConnMaxLifetime(1 * time.Hour)
// //sqlDB.SetConnMaxIdleTime(15 * time.Minute)
//
// return gormDB, func() {
//
// if gormDB != nil {
// fmt.Println("关闭 db")
// }
//
// }
//}