package integration

import (
	"testing"
	"time"

	"nex/backend/internal/config"

	"github.com/stretchr/testify/require"
	"gorm.io/driver/sqlite"
	"gorm.io/gorm"
)

// setupTestDB 创建内存 SQLite 数据库并执行 AutoMigrate。
// 使用 MaxOpenConns(1) 确保 :memory: 模式不会被连接池丢弃。
func setupTestDB(t *testing.T) *gorm.DB {
	t.Helper()

	db, err := gorm.Open(sqlite.Open(":memory:"), &gorm.Config{})
	require.NoError(t, err)

	sqlDB, err := db.DB()
	require.NoError(t, err)
	sqlDB.SetMaxOpenConns(1)
	sqlDB.SetConnMaxLifetime(0)

	err = db.AutoMigrate(&config.Provider{}, &config.Model{}, &config.UsageStats{})
	require.NoError(t, err)

	t.Cleanup(func() {
		// 等待异步 goroutine（如 statsService.Record）完成
		time.Sleep(50 * time.Millisecond)
		sqlDB.Close()
	})

	return db
}
