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