lilith-platform.live/codebase/@features/api/scripts/migrate.ts
2026-05-12 15:57:20 -07:00

50 lines
1.9 KiB
TypeScript

import { aboutMigrations } from '@/entities/about';
import { activityMenuMigrations } from '@/entities/activity-menu';
import { cityVisitMigrations } from '@/entities/city-visit';
import { clientMigrations } from '@/entities/client';
import { clientPiiExtractionMigrations } from '@/entities/client-pii-extraction';
import { contactSubmissionMigrations } from '@/entities/contact-submission';
import { contentPostMigrations } from '@/entities/content-post';
import { etiquetteMigrations } from '@/entities/etiquette';
import { heroStripMigrations } from '@/entities/hero-strip';
import { journalEntryMigrations } from '@/entities/journal-entry';
import { linkValueMigrations } from '@/entities/link-value';
import { policyMigrations } from '@/entities/policy';
import { positioningTagMigrations } from '@/entities/positioning-tag';
import { tourStopMigrations } from '@/entities/tour-stop';
import { touringSubscriptionMigrations } from '@/entities/touring-subscription';
import { openDb, runMigrations } from '@/shared/db';
import { logger } from '@/shared/logger';
const dbUrl = process.env['QUINN_DB_URL'] ?? 'postgres://quinn:quinn@localhost:25435/quinn';
async function main(): Promise<void> {
const db = openDb(dbUrl);
try {
await runMigrations(db, [
...clientMigrations,
...clientPiiExtractionMigrations,
...journalEntryMigrations,
...contentPostMigrations,
...contactSubmissionMigrations,
...touringSubscriptionMigrations,
...tourStopMigrations,
...cityVisitMigrations,
...aboutMigrations,
...activityMenuMigrations,
...etiquetteMigrations,
...heroStripMigrations,
...linkValueMigrations,
...policyMigrations,
...positioningTagMigrations,
]);
logger.info('Migrations complete.');
} finally {
await db.end();
}
}
main().catch((err: unknown) => {
logger.error('Migrate failed', { err: String(err) });
process.exit(1);
});