Files
teddys48 f4714e2e2a
All checks were successful
Build and Deploy / cleaning (push) Successful in 10s
Build and Deploy / build_image (push) Successful in 2m47s
Build and Deploy / deploy (push) Successful in 2s
qwqw
2026-02-12 10:58:47 +07:00

52 lines
1.3 KiB
Go

package config
import (
"fmt"
"os"
"strconv"
"time"
"gorm.io/driver/postgres"
"gorm.io/gorm"
)
func NewDatabase() *gorm.DB {
username := os.Getenv("DB_USERNAME")
password := os.Getenv("DB_PASSWORD")
port, err := strconv.Atoi(os.Getenv("DB_PORT"))
if err != nil {
fmt.Println("error ", err.Error())
}
host := os.Getenv("DB_HOST")
database := os.Getenv("DB_NAME")
idleConnection := 10
maxConnection := 100
maxLifeTimeConnection := 300
dsn := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%d sslmode=disable TimeZone=Asia/Jakarta", host, username, password, database, port)
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{
// Logger: logger.New(&logrusWriter{Logger: log}, logger.Config{
// SlowThreshold: time.Second * 5,
// Colorful: false,
// IgnoreRecordNotFoundError: true,
// ParameterizedQueries: true,
// LogLevel: logger.Info,
// }),
})
if err != nil {
fmt.Println("failed to connect database: ", err)
}
connection, err := db.DB()
if err != nil {
fmt.Println("failed to connect database: ", err)
}
connection.SetMaxIdleConns(idleConnection)
connection.SetMaxOpenConns(maxConnection)
connection.SetConnMaxLifetime(time.Second * time.Duration(maxLifeTimeConnection))
return db
}