/** * Script pour créer les tables directement depuis Node.js * Usage: node scripts/create-tables.js */ import { readFileSync } from 'fs'; import { fileURLToPath } from 'url'; import { dirname, join } from 'path'; import { pool } from '../db.js'; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); async function createTables() { try { console.log('🚀 Création des tables dans la base de données...\n'); // Lire le fichier schema.sql const schemaPath = join(__dirname, '..', 'database', 'schema.sql'); console.log('📄 Lecture du fichier:', schemaPath); const schema = readFileSync(schemaPath, 'utf-8'); console.log('✅ Fichier schema.sql chargé\n'); // Exécuter le schéma SQL console.log('⚙️ Exécution du schéma SQL...'); await pool.query(schema); console.log('✅ Schéma SQL exécuté avec succès!\n'); // Vérifier les tables créées console.log('🔍 Vérification des tables créées...'); const tablesResult = await pool.query(` SELECT table_name FROM information_schema.tables WHERE table_schema = 'public' AND table_type = 'BASE TABLE' ORDER BY table_name; `); console.log(`\n📋 Tables créées (${tablesResult.rows.length}):`); tablesResult.rows.forEach((row, index) => { console.log(` ${index + 1}. ${row.table_name}`); }); // Compter les enregistrements initiaux console.log('\n📊 Enregistrements initiaux:'); for (const table of tablesResult.rows) { const countResult = await pool.query(`SELECT COUNT(*) as count FROM ${table.table_name}`); console.log(` ${table.table_name.padEnd(20)} : ${countResult.rows[0].count} enregistrements`); } console.log('\n✨ Tables créées avec succès!'); console.log('\n💡 Prochaine étape : Exécutez "npm run db:seed" pour insérer les données de test'); } catch (error) { console.error('\n❌ Erreur lors de la création des tables:', error.message); if (error.code === 'ENOENT') { console.error(' Le fichier database/schema.sql est introuvable'); } else if (error.code === '42P07') { console.error(' Les tables existent déjà. Le script les a supprimées et recréées.'); } else { console.error('\n Détails de l\'erreur:'); console.error(' Code:', error.code); console.error(' Position:', error.position); console.error(' Message:', error.message); } process.exit(1); } finally { await pool.end(); } } // Exécuter la création createTables();