package config

import (
	"log"
	"time"

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

func NewDatabase(cfg *Config) *gorm.DB {
	db, err := gorm.Open(postgres.Open(cfg.DatabaseURL), &gorm.Config{
		Logger: logger.Default.LogMode(logger.Info),
	})
	if err != nil {
		log.Fatalf("Failed to connect to database: %v", err)
	}

	sqlDB, err := db.DB()
	if err != nil {
		log.Fatalf("Failed to get database instance: %v", err)
	}

	// 连接池配置 (优化: 支持更高并发)
	sqlDB.SetMaxIdleConns(50)                   // 空闲连接数 (原 10)
	sqlDB.SetMaxOpenConns(200)                  // 最大连接数 (原 100)
	sqlDB.SetConnMaxLifetime(5 * time.Minute)   // 连接最大生命周期
	sqlDB.SetConnMaxIdleTime(2 * time.Minute)   // 空闲连接最大生命周期

	log.Println("Database connected successfully")
	return db
}
