package database

import (
	configs "goFiber/config"
	"log"
	"time"

	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"gorm.io/gorm/logger"
)

var DB *gorm.DB

func ConnectDB() {
	dsn := configs.AppConfig.DBUrl
	if dsn == "" {
		log.Println(".env dosyasında DB_URL ayarlı değil — veritabanı bağlantısı atlanıyor (geliştirme modu)")
		return
	}

	log.Println("Yapılandırmada DB_URL bulundu, veritabanına bağlanılmaya çalışılıyor...")

	// GORM için MySQL konfigürasyonu
	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{
		Logger:      logger.Default.LogMode(logger.Info), // Info seviyesi (performans etkileyebilir); üretimde Error seviyesine alınabilir
		PrepareStmt: true,                                // PrepareStmt performansını artırmak için
		NowFunc: func() time.Time {
			return time.Now().UTC()
		},
	})
	if err != nil {
		log.Println("MySQL veritabanı bağlantısı kurulamadı:", err)
		return
	}

	log.Println("MySQL veritabanı bağlantısı kuruldu.")
	DB = db
}
