the-tip-top-backend/scripts/test-filter-tickets.js
2025-11-17 23:47:54 +01:00

72 lines
2.0 KiB
JavaScript
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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();