#!/usr/bin/env node // Run all Postgres-compatible migrations in order. // Each migration is idempotent (safe to re-run). // Used by CI/CD pipeline during deploy to ensure schema is up to date. // // Usage: cd backend && node migrations/run-all.js const { execSync } = require('child_process'); const path = require('path'); const fs = require('fs'); const MIGRATIONS_DIR = __dirname; // Only run migrations that use the Postgres pool (not legacy SQLite ones). // Add new migrations to this list as they're created. const POSTGRES_MIGRATIONS = [ 'add_decom_workflow_type.js', ]; async function runAll() { console.log(`[Migrations] Running ${POSTGRES_MIGRATIONS.length} Postgres migration(s)...`); let succeeded = 0; let failed = 0; for (const file of POSTGRES_MIGRATIONS) { const fullPath = path.join(MIGRATIONS_DIR, file); if (!fs.existsSync(fullPath)) { console.error(` [FAIL] ${file}: file not found`); failed++; continue; } try { console.log(` [run] ${file}`); execSync(`node ${fullPath}`, { cwd: path.join(MIGRATIONS_DIR, '..'), stdio: 'inherit', timeout: 30000, }); succeeded++; } catch (err) { console.error(` [FAIL] ${file}: exit code ${err.status}`); failed++; } } console.log(`[Migrations] Done: ${succeeded} applied, ${failed} failed`); if (failed > 0) process.exit(1); } runAll();