import { readdirSync, readFileSync } from 'node:fs'; import assert from 'node:assert/strict'; const files = readdirSync('.').filter(f => f.endsWith('.sql')).sort(); assert(files.length > 0, 'No migrations'); const versions = new Set(); for (const file of files) { const match = /^(\d+)_[a-z0-9_]+\.up\.sql$/.exec(file); assert(match, `Invalid migration filename: ${file}`); assert(!versions.has(match[1]), `Duplicate version: ${file}`); versions.add(match[1]); assert(readFileSync(file, 'utf8').trim(), `Empty migration: ${file}`); } console.log(`${files.length} migration files checked (structure only; MySQL execution still required).`);