All checks were successful
Build & Deploy Costco Grocery List / build (push) Successful in 1m10s
Build & Deploy Costco Grocery List / verify-images (push) Successful in 3s
Build & Deploy Costco Grocery List / deploy (push) Successful in 11s
Build & Deploy Costco Grocery List / notify (push) Successful in 1s
2.3 KiB
2.3 KiB
DB Migration Workflow (External Postgres)
This project uses an external on-prem Postgres database. Migration files are canonical in:
packages/db/migrations
Preconditions
DATABASE_URLis set and points to the on-prem Postgres instance.psqlis installed and available in PATH.- You are in repo root.
Commands
- Apply pending migrations:
npm run db:migrate
- Show migration status:
npm run db:migrate:status
- Fail if pending migrations exist:
npm run db:migrate:verify
- Create a new migration file:
npm run db:migrate:new -- <migration-name>
- Track stale legacy SQL in
backend/migrations:npm run db:migrate:stale
- Fail when stale legacy SQL exists:
npm run db:migrate:stale:check
Active migration set
Migration files are applied in lexicographic filename order from packages/db/migrations.
backend/migrations is legacy reference-only and not part of canonical execution.
packages/db/migrations/stale-files.json is the source of truth for canonical files that are intentionally stale/ignored.
Current baseline files:
add_display_name_column.sqladd_image_columns.sqladd_modified_on_column.sqladd_notes_column.sqlcreate_item_classification_table.sqlcreate_sessions_table.sqlmulti_household_architecture.sql
Tracking table
Applied migrations are recorded in:
schema_migrations(filename text unique, applied_at timestamptz)
Expected operator flow
- Check status:
npm run db:migrate:status
- If a new implementation needs schema changes, create a new file:
npm run db:migrate:new -- <migration-name>
- Apply pending:
npm run db:migrate
- Verify clean state:
npm run db:migrate:verify
Troubleshooting
DATABASE_URL is required:- Export/set
DATABASE_URLin your environment.
- Export/set
psql executable was not found in PATH:- Install PostgreSQL client tools and retry.
- SQL failure:
- Fix migration SQL and rerun; only successful files are recorded in
schema_migrations.
- Fix migration SQL and rerun; only successful files are recorded in
- Skip known stale SQL files for a specific environment:
- Set
DB_MIGRATE_SKIP_FILESto a comma-separated filename list. - Example:
DB_MIGRATE_SKIP_FILES=add_modified_on_column.sql,add_image_columns.sql
- Set
- Temporarily include files listed in
stale-files.json:- Set
DB_MIGRATE_INCLUDE_STALE=truebefore running migration commands.
- Set