rideaware-api/config/database.go
2025-09-18 21:03:49 -05:00

42 lines
821 B
Go

package config
import (
"fmt"
"log"
"os"
"time"
"gorm.io/driver/postgres"
"gorm.io/gorm"
)
func InitDB() *gorm.DB {
host := os.Getenv("PG_HOST")
port := os.Getenv("PG_PORT")
database := os.Getenv("PG_DATABASE")
user := os.Getenv("PG_USER")
password := os.Getenv("PG_PASSWORD")
dsn := fmt.Sprintf(`host=%s port=%s user=%s password='%s' dbname=%s sslmode=disable`,
host, port, user, password, database)
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
if err != nil {
log.Fatal("Failed to connect to database:", err)
}
sqlDB, err := db.DB()
if err != nil {
log.Fatal("Failed to get sql.DB from gorm:", err)
}
sqlDB.SetMaxOpenConns(25)
sqlDB.SetMaxIdleConns(25)
sqlDB.SetConnMaxLifetime(30 * time.Minute)
if err != nil {
log.Fatal("Database ping failed:", err)
}
return db
}