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

71 lines
2.2 KiB
JavaScript

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