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

40 lines
1.4 KiB
JavaScript

import { pool } from '../db.js';
const verifyTickets = async () => {
try {
console.log('\n📊 VÉRIFICATION DES TICKETS\n');
// Total count
const countResult = await pool.query('SELECT COUNT(*) FROM tickets');
console.log(`✅ Total: ${parseInt(countResult.rows[0].count).toLocaleString('fr-FR')} tickets`);
// Sample tickets
const sampleResult = await pool.query('SELECT code, prize_id, status FROM tickets ORDER BY RANDOM() LIMIT 10');
console.log('\n🎫 Échantillon de tickets:');
sampleResult.rows.forEach(t => {
console.log(` ${t.code} - Prize ID: ${t.prize_id} - Status: ${t.status || 'NULL'}`);
});
// First and last tickets
const rangeResult = await pool.query('SELECT code FROM tickets ORDER BY id LIMIT 1');
const lastResult = await pool.query('SELECT code FROM tickets ORDER BY id DESC LIMIT 1');
console.log(`\n📍 Premier ticket: ${rangeResult.rows[0].code}`);
console.log(`📍 Dernier ticket: ${lastResult.rows[0].code}`);
// Verify format
const formatCheck = await pool.query(`
SELECT COUNT(*) as invalid_count
FROM tickets
WHERE code !~ '^TTP[0-9]{4}[A-Z0-9]{3}$'
`);
console.log(`\n✅ Tickets avec format invalide: ${formatCheck.rows[0].invalid_count}`);
process.exit(0);
} catch (error) {
console.error('❌ Erreur:', error.message);
process.exit(1);
}
};
verifyTickets();