codigo0/backend/scripts/migrate-drugs-schema.js

86 lines
2.6 KiB
JavaScript
Raw Normal View History

2026-01-19 08:10:16 +00:00
/**
* Script para ejecutar la migración del esquema de drugs
*
* Ejecuta: backend/database/migrations/002_create_drugs_schema.sql
*/
import { readFile } from 'fs/promises';
import { join, dirname } from 'path';
import { fileURLToPath } from 'url';
import { query } from '../config/database.js';
import 'dotenv/config';
const __filename = fileURLToPath(import.meta.url);
const __dirname = dirname(__filename);
const migrationPath = join(__dirname, '../database/migrations/002_create_drugs_schema.sql');
async function runMigration() {
try {
console.log('🔧 Ejecutando migración: Esquema de Vademécum TES (Drugs)\n');
// Leer el SQL
const migrationSql = await readFile(migrationPath, 'utf-8');
console.log('📝 Ejecutando SQL...\n');
try {
// Ejecutar todo el SQL
await query(migrationSql);
console.log('✅ Migración ejecutada correctamente\n');
} catch (error) {
// Ignorar errores de "ya existe"
if (error.code === '42P07' || error.code === '42710' || error.message.includes('already exists')) {
console.log('⚠️ Algunos objetos ya existen (esto es normal si ya se ejecutó antes)\n');
} else {
throw error;
}
}
// Verificar tablas creadas
console.log('📊 Verificando tablas creadas...');
const tablesResult = await query(`
SELECT table_name
FROM information_schema.tables
WHERE table_schema = 'tes_content'
AND table_name IN ('drugs', 'drug_versions')
ORDER BY table_name
`);
if (tablesResult.rows.length > 0) {
console.log(' Tablas encontradas:');
tablesResult.rows.forEach(row => {
console.log(`${row.table_name}`);
});
} else {
console.log(' ⚠️ No se encontraron las tablas drugs o drug_versions');
}
// Verificar enums creados
console.log('\n📊 Verificando enums creados...');
const enumsResult = await query(`
SELECT typname
FROM pg_type
WHERE typnamespace = (SELECT oid FROM pg_namespace WHERE nspname = 'tes_content')
AND typname IN ('drug_line', 'drug_frequency')
ORDER BY typname
`);
if (enumsResult.rows.length > 0) {
console.log(' Enums encontrados:');
enumsResult.rows.forEach(row => {
console.log(`${row.typname}`);
});
}
console.log('\n✅ Migración del esquema de drugs completada!\n');
} catch (error) {
console.error('❌ Error ejecutando migración:', error.message);
console.error(error);
process.exit(1);
}
}
runMigration();