package db import ( "fmt" _ "github.com/lib/pq" "go.uber.org/zap" _ "gopkg.in/yaml.v3" "gorm.io/driver/postgres" "gorm.io/gorm" "enaklo-pos-be/config" ) func NewPostgres(c config.Database) (*gorm.DB, error) { dialector := postgres.New(postgres.Config{ DSN: c.DSN(), }) db, err := gorm.Open(dialector, &gorm.Config{}) //db, err := gorm.Open(dialector, &gorm.Config{ // Logger: logger.Default.LogMode(logger.Info), // Enable GORM logging //}) if err != nil { return nil, err } zapCfg := zap.NewProductionConfig() zapCfg.Level = zap.NewAtomicLevelAt(zap.ErrorLevel) // whatever minimum level zapCfg.DisableCaller = false // logger, _ := zapCfg.Build() // db = gorm.Open(sqldblogger.New(logger), db) // ping the database to test the connection sqlDB, err := db.DB() if err != nil { return nil, err } if err := sqlDB.Ping(); err != nil { return nil, err } sqlDB.SetMaxIdleConns(c.MaxIdleConnectionsInSecond) sqlDB.SetMaxOpenConns(c.MaxOpenConnectionsInSecond) sqlDB.SetConnMaxLifetime(c.ConnectionMaxLifetime()) fmt.Println("Successfully connected to PostgreSQL database") return db, nil }