18 lines
615 B
JavaScript
18 lines
615 B
JavaScript
import { readdir, readFile } from 'node:fs/promises'
|
|
|
|
const files = (await readdir(new URL('../migrations/', import.meta.url)))
|
|
.filter((name) => /^\d{3}_.+\.sql$/.test(name))
|
|
.sort()
|
|
|
|
if (files.length === 0) throw new Error('No migrations found')
|
|
|
|
for (const file of files) {
|
|
const sql = await readFile(new URL(`../migrations/${file}`, import.meta.url), 'utf8')
|
|
if (!sql.trim()) throw new Error(`${file} is empty`)
|
|
if (/\bDROP\s+(DATABASE|SCHEMA)\b/i.test(sql)) {
|
|
throw new Error(`${file} contains destructive database/schema DDL`)
|
|
}
|
|
}
|
|
|
|
console.log(JSON.stringify({ ok: true, migrations: files }))
|