the-tip-top-backend/scripts/fix-ticket-status.js
2025-11-17 23:47:54 +01:00

53 lines
1.6 KiB
JavaScript

import { pool } from '../db.js';
const fixTicketStatus = async () => {
try {
console.log('🔄 Correction du statut des tickets non réclamés...\n');
// Mettre à NULL le statut des tickets qui n'ont pas de user_id
// (tickets pré-générés, non encore joués)
const result = await pool.query(`
UPDATE tickets
SET status = NULL, played_at = NULL
WHERE user_id IS NULL AND status = 'PENDING'
RETURNING id
`);
const count = result.rowCount;
console.log(`${count.toLocaleString('fr-FR')} tickets mis à jour`);
console.log(' Status: NULL (disponible, non encore joué)');
console.log(' played_at: NULL\n');
// Afficher les statistiques
const stats = await pool.query(`
SELECT
status,
COUNT(*) as count,
CASE
WHEN user_id IS NULL THEN 'Sans utilisateur'
ELSE 'Avec utilisateur'
END as user_status
FROM tickets
GROUP BY status, CASE WHEN user_id IS NULL THEN 'Sans utilisateur' ELSE 'Avec utilisateur' END
ORDER BY status NULLS FIRST, user_status
`);
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} | ${row.user_status}: ${countStr}`);
});
console.log('');
await pool.end();
process.exit(0);
} catch (error) {
console.error('❌ Erreur:', error.message);
await pool.end();
process.exit(1);
}
};
fixTicketStatus();