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 }