voucher/internal/data/gorm.go

44 lines
709 B
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
}