Files
ukmesh/docs/db-lifecycle.md
T
Ben 21224a0525 Refactor backend, map, and worker boundaries
- split backend API into route/service/repository boundaries across stats, owner, and pathing\n- extract shared API bootstrap and helper modules\n- reduce MapLibreMap into smaller frontend map modules with extracted builders, config, popup UI, and types\n- continue worker modularization by extracting RF terrain/tile helpers alongside RF config and loss helpers\n- add repo-local architecture, DB lifecycle, link model, pathing, frontend map, and contributing docs\n\nThis is the verified refactor checkpoint: backend and frontend builds passed, worker syntax checks passed, affected containers were rebuilt, and /healthz is OK.
2026-03-20 17:45:47 +00:00

38 lines
917 B
Markdown

# DB Lifecycle
## Rules
- `backend/src/db/schema/base.sql`
- only cheap, idempotent base schema work
- `backend/src/db/migrations.ts`
- runs additive versioned migrations
- historical backfills must not run on backend startup
## Use the right layer
### Base schema
Use for:
- table creation
- index creation
- safe `ALTER TABLE ... ADD COLUMN IF NOT EXISTS`
Do not use for:
- whole-table `UPDATE` backfills
- historical recomputation
- data repair
### Migrations
Use for:
- additive schema changes that need one-time application
- constraints or indexes that belong to a versioned rollout
### Backfills / maintenance jobs
Use for:
- recomputing derived packet fields
- rebuilding link tables
- recalculating historical summaries
## Startup guarantee
Backend startup should be safe against a production-sized database. If a change can lock or scan large tables, it does not belong in startup schema init.