deckhearth/migrations
Randall Stillwell 77be685d2e feat(migrations): reconcile collaboration tables missed by initial-schema backfill (B3)
Captures the DDL half of scripts/add-collaboration-features.js that the
initial-schema backfill missed:

  - collection_permissions (collaboration roles + invite tokens)
  - collection_activity (audit-trail with JSONB details)
  - users.is_pending (column for invited-but-not-yet-accepted users)
  - 4 indexes for query hot-paths

lib/permission-middleware.js reads collection_permissions in
withCollectionPermission and writes collection_activity from
logCollectionActivity, so a fresh Neon branch onboarded by
`npm run setup-db` MUST land these tables. Prod was brought to this
shape by add-collaboration-features.js running historically; this
migration brings fresh envs to parity per
.convoys/reconcile-historical-add-scripts.md Brief outline -> B3.

Idempotent against fresh and existing envs:
CREATE TABLE IF NOT EXISTS / ADD COLUMN IF NOT EXISTS / CREATE INDEX
IF NOT EXISTS so re-application against any post-historical-script env
is a no-op except recording the pgmigrations row.

Owner-permission DML backfill is intentionally NOT captured - fresh
envs have no pre-existing collections needing backfill, and prod's
backfill is already applied.

down() is a hard stub matching the initial-schema pattern.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-14 08:18:44 -05:00
..
1779853647564_initial-schema.js feat(infra): adopt node-pg-migrate + backfill initial schema migration (#32) 2026-05-26 23:01:58 -05:00
1779853647565_add-pg-trgm-card-name-index.js feat(scanner): AI Gateway vision + Layer-1 Tesseract/pg_trgm OCR (#38) 2026-05-27 12:59:59 -05:00
1779853647566_add-scan-tables.js ci: run migrations against Postgres service container in CI (#64) 2026-06-02 11:01:18 -05:00
1779908094455_add-user-cards-scan-image-url.js feat(scanner): persist scan captures to Blob (Brief 3) (#44) 2026-05-27 13:57:26 -05:00
1780378340194_system-collection-description.js ci: run migrations against Postgres service container in CI (#64) 2026-06-02 11:01:18 -05:00
1781000000001_reconcile-cards-columns.js feat(migrations): reconcile cards columns missed by initial-schema backfill (B1) (#148) 2026-06-14 08:11:08 -05:00
1781000000002_reconcile-collections-columns.js feat(migrations): reconcile collections columns missed by initial-schema backfill (B2) (#150) 2026-06-14 08:18:05 -05:00
1781000000003_reconcile-collaboration-tables.js feat(migrations): reconcile collaboration tables missed by initial-schema backfill (B3) 2026-06-14 08:18:44 -05:00
1781000000004_reconcile-favorites-system.js feat(migrations): reconcile favorites system missed by initial-schema backfill (B4) (#152) 2026-06-14 08:11:26 -05:00
1781000000005_reconcile-user-profile.js feat(migrations): reconcile user profile missed by initial-schema backfill (B5) (#153) 2026-06-14 08:18:20 -05:00
1781000000006_reconcile-user-cards-unique.js feat(migrations): reconcile user_cards UNIQUE constraint per Option A (B6) (#149) 2026-06-14 08:18:22 -05:00
1781440700404_add-scryfall-bulk-columns.js feat(catalog): Scryfall bulk data import + Tagger community tags 2026-06-14 07:51:39 -05:00
1781440721350_add-tagger-tables.js feat(catalog): Scryfall bulk data import + Tagger community tags 2026-06-14 07:51:39 -05:00