package config import ( "fmt" "log" "os" "strings" // TAMBAHAN: Untuk membersihkan spasi/enter gaib "s-class-backend/models" "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 }