14 lines
650 B
JavaScript
14 lines
650 B
JavaScript
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).`);
|