pageta/apps/api/drizzle.config.ts
Till JS 955cfadba4 feat(api): versionierte Drizzle-Migrations + Auto-Apply beim Boot
`db:push --force` als einziger Schema-Sync-Pfad war eine Falle:
am 2026-05-18 wurde das pageta-postgres-Volume im Compose-Project-
Collision-Fix neu initialisiert, der db:push lief nicht mehr, und
die DB blieb wochenlang ohne reader-Schema unentdeckt liegen
(Logs spammten `relation "reader.preferences" does not exist` für
jeden Feed-Call). Erstmal heute manuell via drizzle-kit push --force
in den Container repariert; jetzt nachhaltig:

- `out: ./src/db/migrations` in drizzle.config.ts → versionierte
  SQL-Files im Repo (Pattern nach nutriphi)
- `0000_initial.sql` initial generiert (8 Tabellen im reader-Schema)
- `src/db/migrate.ts` als runMigrations-Helper
- Opt-in Auto-Apply beim Boot via `PAGETA_RUN_MIGRATIONS=true`
  (Production-Compose setzt das Flag; Local-Dev bleibt bei db:push)
- Idempotent über drizzle.__drizzle_migrations-Tracking-Tabelle —
  Volume-Reset führt jetzt automatisch zu sauberem Schema-Sync

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-20 14:06:29 +02:00

13 lines
335 B
TypeScript

import type { Config } from 'drizzle-kit';
export default {
schema: './src/db/schema.ts',
out: './src/db/migrations',
dialect: 'postgresql',
dbCredentials: {
url: process.env.DATABASE_URL ?? 'postgres://pageta:devpassword@localhost:5443/pageta',
},
schemaFilter: ['reader'],
verbose: true,
strict: true,
} satisfies Config;