79 lines
1.5 KiB
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")
|
|
// }
|
|
//
|
|
// }
|
|
//}
|