the-tip-top-backend/scripts/update-ticket-codes.js
soufiane 33668e5a64 fix: resolve all ESLint warnings and update dependencies
- Remove unused variables and imports across codebase
- Use empty catch blocks where error object not needed
- Remove unused fs, path imports from apply-grand-prize-migration.js
- Remove unused OAuth2Client from oauth.controller.js
- Update dependencies to latest patch versions

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-27 10:49:45 +01:00

85 lines
2.2 KiB
JavaScript

import pkg from "pg";
const { Pool } = pkg;
// Configuration de la base de données
const pool = new Pool({
host: "51.75.24.29",
port: 5433,
user: "postgres",
password: "postgres",
database: "thetiptop_dev",
});
/**
* Génère un code de ticket au format TTP2025ABC (10 caractères)
*/
function generateNewTicketCode(_index) {
const year = new Date().getFullYear();
// Générer 3 caractères aléatoires alphanumériques
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
let randomChars = '';
for (let i = 0; i < 3; i++) {
randomChars += chars.charAt(Math.floor(Math.random() * chars.length));
}
return `TTP${year}${randomChars}`;
}
async function updateTicketCodes() {
try {
console.log('🔄 Mise à jour des codes de tickets...\n');
// Récupérer tous les tickets
const result = await pool.query('SELECT id, code FROM tickets ORDER BY created_at');
const tickets = result.rows;
console.log(`📊 ${tickets.length} tickets trouvés\n`);
if (tickets.length === 0) {
console.log('⚠️ Aucun ticket à mettre à jour');
await pool.end();
return;
}
let updatedCount = 0;
const newCodes = new Set(); // Pour éviter les doublons
for (let i = 0; i < tickets.length; i++) {
const ticket = tickets[i];
let newCode;
// Générer un code unique
do {
newCode = generateNewTicketCode(i);
} while (newCodes.has(newCode));
newCodes.add(newCode);
// Mettre à jour le ticket
await pool.query(
'UPDATE tickets SET code = $1 WHERE id = $2',
[newCode, ticket.id]
);
updatedCount++;
console.log(`✅ [${updatedCount}/${tickets.length}] ${ticket.code}${newCode}`);
}
console.log(`\n${updatedCount} tickets mis à jour avec succès!`);
console.log('\n📋 Exemple de nouveaux codes:');
// Afficher quelques exemples
const examplesResult = await pool.query('SELECT code FROM tickets LIMIT 5');
examplesResult.rows.forEach((row, index) => {
console.log(` ${index + 1}. ${row.code}`);
});
await pool.end();
} catch (error) {
console.error('❌ Erreur:', error.message);
await pool.end();
process.exit(1);
}
}
updateTicketCodes();