44 lines
855 B
Go
Raw Normal View History

2023-10-08 15:59:42 +07:00
package db
import (
2025-07-18 20:10:29 +07:00
"apskel-pos-be/config"
2023-10-08 15:59:42 +07:00
"fmt"
_ "github.com/lib/pq"
"go.uber.org/zap"
_ "gopkg.in/yaml.v3"
"gorm.io/driver/postgres"
"gorm.io/gorm"
)
func NewPostgres(c config.Database) (*gorm.DB, error) {
dialector := postgres.New(postgres.Config{
DSN: c.DSN(),
})
db, err := gorm.Open(dialector, &gorm.Config{})
if err != nil {
return nil, err
}
zapCfg := zap.NewProductionConfig()
2025-07-18 20:10:29 +07:00
zapCfg.Level = zap.NewAtomicLevelAt(zap.ErrorLevel)
2024-08-10 23:52:09 +07:00
zapCfg.DisableCaller = false
2023-10-08 15:59:42 +07:00
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
}