package data import ( "fmt" "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, func()) { db1, mf := db(c.Data.Db) cleanup := func() { mf() } return &GormDb{ Client: db1, }, cleanup } func db(data *conf.Data_Database) (*gorm.DB, func()) { //mysqlConn, err := sql.Open(data.Driver, data.Source) gormDB, err := gorm.Open( mysql.Open(data.Driver), &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") } } }