worklog-api/db/connection.go

48 lines
846 B
Go

package db
import (
"fmt"
"os"
"gorm.io/driver/postgres"
"gorm.io/gorm"
)
var DB *gorm.DB
func getEnv(key string) string {
if value, ok := os.LookupEnv(key); ok {
return value
}
panic(fmt.Sprintf("Missing environment variable: %s", key))
}
func Init() *gorm.DB {
if DB != nil {
return DB
}
connectionString := fmt.Sprintf("host=%s user=%s password=%s dbname=%s host=%s port=%s TimeZone=%s",
getEnv("DB_HOST"),
getEnv("DB_USER"),
getEnv("DB_PASSWORD"),
getEnv("DB_NAME"),
getEnv("DB_HOST"),
getEnv("DB_PORT"),
getEnv("DB_TZ"))
db, err := gorm.Open(postgres.Open(connectionString), &gorm.Config{})
if err != nil {
panic(fmt.Errorf("failed to connect to database: %v", err))
}
sqlDB, err := db.DB()
if err != nil {
panic(err)
}
sqlDB.SetMaxOpenConns(10)
sqlDB.SetMaxIdleConns(5)
DB = db
return DB
}