77 lines
2.5 KiB
JavaScript
77 lines
2.5 KiB
JavaScript
/**
|
|
* 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();
|