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

81 lines
2.3 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 generateTicketCode() {
const year = new Date().getFullYear();
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}`;
}
/**
* Vérifie si un code existe déjà dans la base de données
*/
async function codeExists(code) {
const result = await pool.query(
'SELECT id FROM tickets WHERE code = $1',
[code]
);
return result.rows.length > 0;
}
async function generateFreshCodes() {
try {
console.log('🎟️ Génération de codes de tickets frais pour les tests...\n');
const freshCodes = [];
const numberOfCodes = 10; // Générer 10 codes
while (freshCodes.length < numberOfCodes) {
const code = generateTicketCode();
// Vérifier que le code n'existe pas déjà
if (!(await codeExists(code)) && !freshCodes.includes(code)) {
freshCodes.push(code);
}
}
console.log('✅ Codes générés avec succès!\n');
console.log('━'.repeat(60));
console.log('📋 CODES DE TICKETS DE TEST (NON UTILISÉS)');
console.log('━'.repeat(60));
freshCodes.forEach((code, index) => {
console.log(` ${index + 1}. ${code}`);
});
console.log('━'.repeat(60));
console.log('\n📝 INSTRUCTIONS:');
console.log(' 1. Connectez-vous avec: client1@example.com / Client123!');
console.log(' 2. Utilisez l\'un des codes ci-dessus pour jouer');
console.log(' 3. Le système attribuera un prix aléatoirement');
console.log(' 4. Chaque code ne peut être utilisé qu\'une seule fois\n');
console.log('💡 ASTUCE:');
console.log(' Ces codes n\'existent PAS encore dans la base de données.');
console.log(' Ils simulent des tickets de caisse physiques non utilisés.\n');
await pool.end();
} catch (error) {
console.error('❌ Erreur:', error.message);
await pool.end();
process.exit(1);
}
}
generateFreshCodes();