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();