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

66 lines
1.7 KiB
JavaScript

/**
* Script pour exécuter les migrations SQL
*/
import { readFileSync } from 'fs';
import { pool } from '../db.js';
async function runMigration() {
try {
console.log('🔄 Lecture du fichier de migration...');
// Lire le fichier SQL
const migrationSQL = readFileSync(
'./database/migrations/add-demographics-fields.sql',
'utf8'
);
console.log('🔄 Exécution de la migration...');
// Exécuter la migration
await pool.query(migrationSQL);
console.log('✅ Migration exécutée avec succès !');
// Vérifier que les colonnes ont été ajoutées
const checkResult = await pool.query(`
SELECT column_name, data_type, column_default
FROM information_schema.columns
WHERE table_name = 'users'
AND column_name IN ('gender', 'date_of_birth')
ORDER BY column_name
`);
console.log('\n📋 Colonnes ajoutées:');
checkResult.rows.forEach(row => {
console.log(` - ${row.column_name} (${row.data_type})`);
});
// Vérifier le type ENUM
const enumCheck = await pool.query(`
SELECT typname, enumlabel
FROM pg_type
JOIN pg_enum ON pg_type.oid = pg_enum.enumtypid
WHERE typname = 'gender_type'
ORDER BY enumlabel
`);
if (enumCheck.rows.length > 0) {
console.log('\n📋 Valeurs du type gender_type:');
enumCheck.rows.forEach(row => {
console.log(` - ${row.enumlabel}`);
});
}
console.log('\n✅ Migration complète et vérifiée !');
} catch (error) {
console.error('❌ Erreur lors de la migration:', error.message);
console.error(error);
process.exit(1);
} finally {
await pool.end();
}
}
runMigration();