import { pool } from '../db.js'; const getTestCodes = async () => { try { console.log('\n🎫 CODES DE TEST DISPONIBLES\n'); // Récupérer 10 tickets disponibles de chaque type de prix const result = await pool.query(` SELECT t.code, p.name as prize_name, p.type as prize_type FROM tickets t JOIN prizes p ON t.prize_id = p.id WHERE t.status IS NULL ORDER BY p.type, RANDOM() LIMIT 50 `); if (result.rows.length === 0) { console.log('❌ Aucun ticket disponible'); process.exit(1); } console.log('Voici des codes de tickets disponibles pour tester:\n'); const groupedByPrize = {}; result.rows.forEach(ticket => { if (!groupedByPrize[ticket.prize_name]) { groupedByPrize[ticket.prize_name] = []; } groupedByPrize[ticket.prize_name].push(ticket.code); }); for (const [prizeName, codes] of Object.entries(groupedByPrize)) { console.log(`📦 ${prizeName}:`); codes.slice(0, 5).forEach(code => { console.log(` ${code}`); }); console.log(''); } console.log('🧪 Pour tester:'); console.log(' 1. Connectez-vous avec: client1@example.com / Client123!'); console.log(' 2. Allez sur la page Jeu'); console.log(' 3. Entrez un de ces codes'); console.log(' 4. Le ticket deviendra PENDING et apparaîtra dans vos gains\n'); // Statistiques const stats = await pool.query(` SELECT COUNT(*) FILTER (WHERE status IS NULL) as available, COUNT(*) FILTER (WHERE status = 'PENDING') as pending, COUNT(*) FILTER (WHERE status = 'CLAIMED') as claimed, COUNT(*) as total FROM tickets `); const s = stats.rows[0]; console.log('📊 STATISTIQUES:'); console.log(` Total tickets: ${parseInt(s.total).toLocaleString('fr-FR')}`); console.log(` Disponibles: ${parseInt(s.available).toLocaleString('fr-FR')}`); console.log(` En attente: ${parseInt(s.pending).toLocaleString('fr-FR')}`); console.log(` Réclamés: ${parseInt(s.claimed).toLocaleString('fr-FR')}\n`); process.exit(0); } catch (error) { console.error('❌ Erreur:', error.message); process.exit(1); } }; getTestCodes();