package database import ( "cardverse/config" "cardverse/internal/modules/auth" "cardverse/internal/modules/cardmaster" "cardverse/internal/modules/seriessetmaster" "cardverse/internal/modules/user" "fmt" "log" "gorm.io/driver/postgres" "gorm.io/gorm" "gorm.io/gorm/logger" ) var DB *gorm.DB // Connect membuka koneksi ke database PostgreSQL menggunakan config yang sudah di-load func Connect(cfg *config.Config) *gorm.DB { dsn := fmt.Sprintf( "host=%s port=%s user=%s password=%s dbname=%s sslmode=%s", cfg.DBHost, cfg.DBPort, cfg.DBUser, cfg.DBPassword, cfg.DBName, cfg.DBSSLMode, ) logLevel := logger.Silent if cfg.AppEnv == "development" { logLevel = logger.Info } db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{ Logger: logger.Default.LogMode(logLevel), }) if err != nil { log.Fatalf("gagal konek ke database: %v", err) } DB = db log.Println("berhasil konek ke database") return DB } // AutoMigrate mendaftarkan semua model dari setiap module untuk di-migrate. // Tambahkan model module baru di sini ketika membuat module baru. func AutoMigrate(db *gorm.DB) { err := db.AutoMigrate( &user.User{}, &seriessetmaster.SeriesSetMaster{}, &cardmaster.CardMaster{}, &auth.RefreshToken{}, ) if err != nil { log.Fatalf("gagal migrasi database: %v", err) } log.Println("migrasi database selesai") }