the-tip-top-backend/scripts/create-tables.js
2025-11-17 23:47:54 +01:00

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