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

62 lines
1.6 KiB
JavaScript

import { pool } from '../db.js';
const checkPendingTickets = async () => {
try {
const result = await pool.query(`
SELECT
t.id,
t.code,
t.status,
t.user_id,
t.played_at,
u.email as user_email,
u.first_name || ' ' || u.last_name as user_name,
p.name as prize_name
FROM tickets t
LEFT JOIN users u ON t.user_id = u.id
LEFT JOIN prizes p ON t.prize_id = p.id
WHERE t.status = 'PENDING'
ORDER BY t.played_at DESC
LIMIT 10
`);
console.log('\n📋 TICKETS EN ATTENTE (PENDING):\n');
if (result.rows.length === 0) {
console.log('⚠️ Aucun ticket PENDING trouvé\n');
} else {
result.rows.forEach((ticket, index) => {
console.log(`${index + 1}. Code: ${ticket.code}`);
console.log(` Client: ${ticket.user_name} (${ticket.user_email})`);
console.log(` Lot: ${ticket.prize_name}`);
console.log(` Joué le: ${ticket.played_at}`);
console.log('');
});
}
// Statistiques globales
const stats = await pool.query(`
SELECT
status,
COUNT(*) as count
FROM tickets
GROUP BY status
ORDER BY status NULLS FIRST
`);
console.log('📊 STATISTIQUES DES TICKETS:');
stats.rows.forEach(row => {
const statusLabel = row.status || 'NULL (disponible)';
const countStr = parseInt(row.count).toLocaleString('fr-FR');
console.log(`${statusLabel}: ${countStr}`);
});
console.log('');
await pool.end();
} catch (error) {
console.error('Erreur:', error.message);
await pool.end();
}
};
checkPendingTickets();