| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- package mysqlx
- import (
- "go.uber.org/zap"
- "gorm.io/driver/mysql"
- "gorm.io/gorm"
- "gorm.io/gorm/logger"
- "gorm.io/gorm/schema"
- "moul.io/zapgorm2"
- "time"
- )
- type Conf struct {
- LogMode bool
- MaxIdleCon int64
- MaxOpenCon int64
- ConnMaxLifeTimeSecond int64
- ConnMaxIdleTimeSecond int64
- Dsn string
- }
- var openDb *gorm.DB
- func Init(conf *Conf, log *zap.Logger) error {
- gConfig := &gorm.Config{
- PrepareStmt: true,
- NamingStrategy: schema.NamingStrategy{
- TablePrefix: "",
- SingularTable: true,
- },
- DisableForeignKeyConstraintWhenMigrating: true,
- }
- dbLogger := zapgorm2.New(log).LogMode(logger.Info)
- if !conf.LogMode {
- dbLogger = dbLogger.LogMode(logger.Silent)
- }
- gConfig.Logger = dbLogger
- db, err := gorm.Open(mysql.Open(conf.Dsn), gConfig)
- if err != nil {
- return err
- }
- sqlDb, err := db.DB()
- if err != nil {
- return err
- }
- sqlDb.SetMaxIdleConns(20)
- sqlDb.SetMaxOpenConns(100)
- sqlDb.SetConnMaxLifetime(time.Duration(120) * time.Second)
- sqlDb.SetConnMaxIdleTime(time.Duration(1800) * time.Second)
- openDb = db
- return nil
- }
- func GetDB() *gorm.DB {
- return openDb
- }
|