feat(db): Postgres schema, migrations and defects repository (T3)

Drizzle schema for projects, defects, push_subscriptions (C8); generated
migration; a defects repository (createDefect / listRecentDefects); a
programmatic migrator; and a db:verify script. section_id is a plain string
referencing in-code board ids, no FK (ADR 0001). Verified against real
Postgres: migration applies, a defect round-trips, /api/health reports db up.
This commit is contained in:
Julien Calixte
2026-05-27 22:39:32 +02:00
parent 7a4860e111
commit 60ee7b6277
10 changed files with 334 additions and 4 deletions

7
server/db/migrate.ts Normal file
View File

@@ -0,0 +1,7 @@
// Applies pending migrations. Run via `pnpm db:migrate`, and on container
// boot in production (wired in Task 12).
import { migrate } from 'drizzle-orm/node-postgres/migrator'
import { getDb, getPool } from './client'
await migrate(getDb(), { migrationsFolder: 'server/db/migrations' })
await getPool().end()