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  }