import { formatMigrationApplyReport } from "./migration-report.js"; import { discoverRepositoryMigrations } from "./migration-command-support.js"; import { reportMigrationCommandError } from "./migration-command-errors.js"; import { resolveExecutableDatabaseTransport } from "./database-transport-environment.js"; import { applyModuleMigrations, createPostgresMigrationDatabase } from "../migrations/index.js"; async function main(): Promise { const aggregate = await discoverRepositoryMigrations(); const databaseUrl = process.env.DATABASE_URL; // Resolved and asserted before any client exists: an unsafe production transport fails // here rather than after opening a connection. const transport = typeof databaseUrl === "string" ? resolveExecutableDatabaseTransport(databaseUrl) : undefined; const database = createPostgresMigrationDatabase(databaseUrl, { ...(transport === undefined ? {} : { transport }), }); const result = await applyModuleMigrations({ aggregate, database }); for (const line of formatMigrationApplyReport(result)) { console.log(line); } } main().catch((error: unknown) => { reportMigrationCommandError(error); process.exitCode = 1; });