import { execSync } from 'node:child_process'; export function checkPendingMigrations() { try { console.info('\x1b[34m%s\x1b[0m', 'Checking for pending migrations...'); const output = execSync('pnpm --filter web supabase migrations list', { encoding: 'utf-8', stdio: 'pipe', }); const lines = output.split('\n'); // Skip header lines const migrationLines = lines.slice(4); const pendingMigrations = migrationLines .filter((line) => { const [local, remote] = line.split('|').map((s) => s.trim()); return local !== '' && remote === ''; }) .map((line) => (line.split('│')[0] ?? '').trim()); if (pendingMigrations.length > 0) { console.log( '\x1b[33m%s\x1b[0m', '⚠️ There are pending migrations that need to be applied:', ); pendingMigrations.forEach((migration) => console.log(` - ${migration}`)); console.log( '\nSome functionality may not work as expected until these migrations are applied.', ); console.log( '\nAfter testing the migrations in your local environment and ideally in a staging environment, please run "pnpm --filter web supabase db push" to apply them to your database. If you have any questions, please open a support ticket.', ); } else { console.log('\x1b[32m%s\x1b[0m', '✅ All migrations are up to date.'); } } catch (error) { console.log( '\x1b[33m%s\x1b[0m', "💡 Info: Project not yet linked to a remote Supabase project. Migration checks skipped - this is expected for new projects. Link your project when you're ready to sync with Supabase.\n", ); } }