/** * portal/schema.mjs — 포털 DB 마이그레이션 모음. * lib 의 공통 표(sessions·jobs·quota·notifications·audit) 뒤에 각 영역의 model.mjs 가 내보내는 MIGRATIONS 를 영역 순서대로 잇는다. * 마이그레이션 id 는 `<영역>_NNNN` 으로 고유해야 한다. */ import * as session from '../lib/session.mjs'; import * as jobs from '../lib/jobs.mjs'; import * as quota from '../lib/quota.mjs'; import * as notify from '../lib/notify.mjs'; import * as audit from '../lib/audit.mjs'; import { join, dirname } from 'node:path'; import { fileURLToPath } from 'node:url'; import { existsSync } from 'node:fs'; import { AREAS } from './app.mjs'; const HERE = dirname(fileURLToPath(import.meta.url)); export async function allMigrations() { const list = [...session.MIGRATIONS, ...jobs.MIGRATIONS, ...quota.MIGRATIONS, ...notify.MIGRATIONS, ...audit.MIGRATIONS]; for (const a of AREAS) { const f = join(HERE, a, 'model.mjs'); if (!existsSync(f)) continue; const m = await import(f); if (Array.isArray(m.MIGRATIONS)) list.push(...m.MIGRATIONS); } return list; }