package models import ( "database/sql" "fmt" "log" "os" "github.com/joho/godotenv" _ "github.com/lib/pq" ) var DB *sql.DB func InitDB() { // Load .env file err := godotenv.Load() // or specify path: godotenv.Load("/path/to/.env") if err != nil { log.Fatalf("Error loading .env file: %v", err) } // Get individual components from environment variables host := os.Getenv("DB_HOST") port := os.Getenv("DB_PORT") user := os.Getenv("DB_USER") password := os.Getenv("DB_PASSWORD") dbname := os.Getenv("DB_NAME") sslmode := os.Getenv("DB_SSLMODE") // optional, default "disable" // Build connection string dsn := fmt.Sprintf("host=%s port=%s user=%s password=%s dbname=%s sslmode=%s", host, port, user, password, dbname, sslmode) // Connect to DB DB, err = sql.Open("postgres", dsn) if err != nil { log.Fatalf("Failed to connect to DB: %v", err) } // Test connection err = DB.Ping() if err != nil { log.Fatalf("Failed to ping DB: %v", err) } fmt.Println("Database connection successful") }