[Valentino Heman Budiarto] 16075c670a .
2026-06-05 19:46:48 +07:00

58 lines
1.6 KiB
Go

package config
import (
"fmt"
"log"
"os"
"s-class-backend/models"
"strings"
"github.com/joho/godotenv"
"gorm.io/driver/postgres"
"gorm.io/gorm"
)
var DB *gorm.DB
func ConnectDatabase() {
err := godotenv.Load()
if err != nil {
log.Println("Peringatan: Error loading .env file (menggunakan variabel sistem)")
}
// MENGGUNAKAN strings.TrimSpace UNTUK MEMBUANG SPASI & ENTER TERSEMBUNYI
dbHost := strings.TrimSpace(os.Getenv("DB_HOST"))
dbUser := strings.TrimSpace(os.Getenv("DB_USER"))
dbPassword := strings.TrimSpace(os.Getenv("DB_PASSWORD"))
dbName := strings.TrimSpace(os.Getenv("DB_NAME"))
dbPort := strings.TrimSpace(os.Getenv("DB_PORT"))
// LOG DEBUGGING: Untuk memastikan panjang karakter password benar (harusnya 8 karakter)
fmt.Printf("[DEBUG] Host: %s | Port: %s | User: %s | DB: %s\n", dbHost, dbPort, dbUser, dbName)
fmt.Printf("[DEBUG] Panjang karakter password yang dibaca Golang: %d\n", len(dbPassword))
dsn := fmt.Sprintf("host=%s user=%s password=%s dbname=%s port=%s sslmode=disable TimeZone=Asia/Jakarta",
dbHost, dbUser, dbPassword, dbName, dbPort)
database, err := gorm.Open(postgres.Open(dsn), &gorm.Config{
DisableForeignKeyConstraintWhenMigrating: true,
})
if err != nil {
fmt.Println("[ERROR FATAL KONEKSI DB]:", err)
panic("Gagal koneksi ke database!")
}
// Auto Migrate (Membuat Tabel Otomatis)
err = database.AutoMigrate(&models.User{}, &models.Room{}, &models.Booking{})
if err != nil {
fmt.Println("Gagal migrasi:", err)
} else {
fmt.Println("Database Migrated!")
}
fmt.Println("Sukses terkoneksi ke Database PostgreSQL!")
DB = database
}