initial commit

This commit is contained in:
2026-05-25 11:52:26 +05:30
commit 0d42ac84e1
53 changed files with 11222 additions and 0 deletions

85
db/connect.go Normal file
View File

@@ -0,0 +1,85 @@
package db
import (
"fmt"
"log"
"os"
"time"
"gorm.io/driver/postgres"
"gorm.io/gorm"
)
var (
DB *gorm.DB
)
// --------------------
// DATABASE CONNECTION
// --------------------
func Connect() {
dsn := fmt.Sprintf(
"host=%s user=%s password=%s dbname=%s port=%s sslmode=disable TimeZone=Asia/Kolkata",
mustEnv("DB_HOST"),
mustEnv("DB_USER"),
mustEnv("DB_PASSWORD"),
mustEnv("DB_NAME"),
getEnv("DB_PORT", "5433"),
)
var err error
DB, err = gorm.Open(postgres.Open(dsn), &gorm.Config{})
if err != nil {
log.Fatal("❌ Could not connect to database:", err)
}
setupDB(DB)
fmt.Println("✅ Database connected")
}
func setupDB(database *gorm.DB) {
sqlDB, err := database.DB()
if err != nil {
log.Fatal("❌ Failed to get DB from GORM:", err)
}
sqlDB.SetMaxIdleConns(100)
sqlDB.SetMaxOpenConns(1000)
sqlDB.SetConnMaxLifetime(time.Minute * 5)
}
// --------------------
// DATABASE SHUTDOWN
// --------------------
func CloseDB() {
if DB == nil {
return
}
sqlDB, err := DB.DB()
if err != nil {
log.Println("Error retrieving sql.DB:", err)
return
}
fmt.Println("Connection closed Successfully")
sqlDB.Close()
}
// --------------------
// ENV HELPERS
// --------------------
func mustEnv(key string) string {
val := os.Getenv(key)
if val == "" {
log.Fatalf("Missing required env variable: %s", key)
}
return val
}
func getEnv(key, fallback string) string {
if val := os.Getenv(key); val != "" {
return val
}
return fallback
}