package benchmarks

import (
	"testing"

	"veza-backend-api/internal/testutils"
)

// BenchmarkDatabaseQuery benchmark pour une requête de base de données (T0044)
func BenchmarkDatabaseQuery(b *testing.B) {
	db := testutils.SetupBenchmarkDB(b)

	b.ResetTimer()
	b.RunParallel(func(pb *testing.PB) {
		for pb.Next() {
			// Exemple de requête
			var count int64
			db.GormDB.Raw("SELECT COUNT(*) FROM users").Scan(&count)
		}
	})
}

// BenchmarkDatabaseQuerySequential benchmark séquentiel pour comparaison (T0044)
func BenchmarkDatabaseQuerySequential(b *testing.B) {
	db := testutils.SetupBenchmarkDB(b)

	b.ResetTimer()
	for i := 0; i < b.N; i++ {
		// Exemple de requête séquentielle
		var count int64
		db.GormDB.Raw("SELECT COUNT(*) FROM users").Scan(&count)
	}
}

// BenchmarkSimpleQuery exemple de benchmark simple (T0044)
func BenchmarkSimpleQuery(b *testing.B) {
	db := testutils.SetupBenchmarkDB(b)

	b.ResetTimer()
	for i := 0; i < b.N; i++ {
		var count int64
		db.GormDB.Raw("SELECT COUNT(*) FROM users").Scan(&count)
	}
}
