import { pool } from '../db.js'; async function testFilterTickets() { try { console.log('\n🧪 TEST DU FILTRE PAR TYPE DE LOT\n'); // Test 1: Sans filtre console.log('1️⃣ Test sans filtre:'); const allTickets = await pool.query(` SELECT COUNT(*) as total FROM tickets t LEFT JOIN prizes p ON t.prize_id = p.id `); console.log(` Total tickets: ${allTickets.rows[0].total}\n`); // Test 2: Avec filtre INFUSEUR console.log('2️⃣ Test avec filtre INFUSEUR:'); const infuseurTickets = await pool.query(` SELECT COUNT(*) as total FROM tickets t LEFT JOIN prizes p ON t.prize_id = p.id WHERE p.type = $1 `, ['INFUSEUR']); console.log(` Tickets INFUSEUR: ${infuseurTickets.rows[0].total}\n`); // Test 3: Lister tous les types disponibles console.log('3️⃣ Types de lots disponibles:'); const types = await pool.query(` SELECT p.type, p.name, COUNT(t.id) as ticket_count FROM prizes p LEFT JOIN tickets t ON p.id = t.prize_id GROUP BY p.type, p.name ORDER BY ticket_count DESC `); types.rows.forEach(row => { console.log(` - ${row.type}: ${row.name} (${row.ticket_count} tickets)`); }); // Test 4: Exemple de requête complète console.log('\n4️⃣ Exemple de requête avec filtre:'); const example = await pool.query(` SELECT t.code, t.status, p.name as prize_name, p.type as prize_type FROM tickets t LEFT JOIN prizes p ON t.prize_id = p.id WHERE p.type = $1 LIMIT 5 `, ['INFUSEUR']); console.log(` ${example.rows.length} résultats:`); example.rows.forEach((row, idx) => { console.log(` ${idx + 1}. ${row.code} - ${row.prize_name} (${row.prize_type}) - ${row.status || 'Non joué'}`); }); await pool.end(); process.exit(0); } catch (error) { console.error('❌ Erreur:', error.message); console.error(error.stack); await pool.end(); process.exit(1); } } testFilterTickets();