github.com/lovung/GoCleanArchitecture@v0.0.0-20210302152432-50d91fd29f9f/cmd/services/core/mysql.go (about) 1 package main 2 3 import ( 4 "os" 5 "time" 6 7 "github.com/lovung/GoCleanArchitecture/app/config" 8 "github.com/lovung/GoCleanArchitecture/pkg/gormer" 9 10 "gorm.io/gorm" 11 "gorm.io/gorm/logger" 12 ) 13 14 func (s *application) initDBConnection(cfg config.MySQL) *gorm.DB { 15 var db *gorm.DB 16 logMode := logger.Default.LogMode(logger.Error) 17 if cfg.IsEnabledLog { 18 logMode = logger.Default.LogMode(logger.Info) 19 } 20 db, err := gormer.OpenDBConnection(cfg.Conn(), 21 gorm.Config{ 22 Logger: logMode, 23 }, 24 ) 25 if err != nil { 26 os.Exit(1) 27 } 28 gormDB, err := db.DB() 29 if err != nil { 30 os.Exit(1) 31 } 32 gormDB.SetMaxOpenConns(cfg.MaxOpenConns) 33 gormDB.SetMaxIdleConns(cfg.MaxIdleConns) 34 gormDB.SetConnMaxLifetime(time.Duration(cfg.ConnMaxLifetime) * time.Minute) 35 return db 36 }