package database

import (
	configs "ares/config"
	"time"

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

var DBPg *gorm.DB

func ConnectDBPg() {
	dsn := configs.AppConfig.DBPGUrl
	if dsn == "" {
		if configs.Logger != nil {
			configs.Logger.Warn(".env dosyasında DB_URL ayarlı değil — veritabanı bağlantısı atlanıyor (geliştirme modu)")
		}
		return
	}

	if configs.Logger != nil {
		configs.Logger.Info("Yapılandırmada DB_URL_PG bulundu, veritabanına bağlanılmaya çalışılıyor...")
	}

	// GORM için MySQL konfigürasyonu
	db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{
		Logger:      logger.Default.LogMode(logger.Warn), // 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 {
		if configs.Logger != nil {
			configs.Logger.Sugar().Errorf("Postgres veritabanı bağlantısı kurulamadı: %v", err)
		}
		return
	}

	if configs.Logger != nil {
		configs.Logger.Info("Postgres veritabanı bağlantısı kuruldu.")
	}
	DBPg = db
}
