/** * Create System Audit Log Table * * Bootstraps the new `system_audit_logs` table on environments where the * full `migrate.ts` (sequelize.sync({ force: true })) cannot be run because * the database already holds production / shared data. * * Safe to re-run: uses `SystemAuditLog.sync()` (no `force`, no `alter`), * which is a no-op once the table exists. * * Run: npx tsx scripts/create-system-audit-log-table.ts */ import 'dotenv/config'; import db from '../src/database/models/index.js'; async function run() { console.log('🔄 Ensuring system_audit_logs table exists...'); try { await db.sequelize.authenticate(); console.log('📡 Database connection OK'); await db.SystemAuditLog.sync(); const [rows] = await db.sequelize.query( `SELECT COUNT(*)::int AS total FROM system_audit_logs` ); const total = (rows as any[])[0]?.total ?? 0; console.log('✅ system_audit_logs is ready'); console.log(` Existing rows: ${total}`); process.exit(0); } catch (err: any) { console.error('❌ Failed to ensure system_audit_logs table:', err.message || err); if (err.stack) console.error(err.stack); process.exit(1); } } run();