diff --git a/Justfile b/Justfile index c53dfc6..757415b 100644 --- a/Justfile +++ b/Justfile @@ -71,7 +71,7 @@ preview: deploy *args: bun turbo deploy "$@" -# Apply D1 migrations (rooms + auth own them). Defaults to --remote; pass `-- --local` +# Apply D1 migrations (every worker with a `migrate` script). Defaults to --remote; pass `-- --local` # for the dev db. Scope with -F, e.g. `just migrate -F rooms`. [group('2. local dev')] [positional-arguments] diff --git a/apps/studio/README.md b/apps/studio/README.md index b56d745..36223e8 100644 --- a/apps/studio/README.md +++ b/apps/studio/README.md @@ -34,3 +34,15 @@ pnpm test ```sh pnpm turbo deploy ``` + +### Migrate + +This worker owns `studio_cloud_build` and `studio_unity_asset_file` on the shared +`recflare` database (`migrations/`, tracked in its own `d1_migrations_studio` table). +Deploying does not apply them; the cdn worker reads `studio_unity_asset_file` and +answers 404 for every Studio bundle until this has run. + +```sh +just migrate -F studio # remote +just migrate -F studio -- --local # dev db +``` diff --git a/apps/studio/package.json b/apps/studio/package.json index d09a57b..93a19b6 100644 --- a/apps/studio/package.json +++ b/apps/studio/package.json @@ -12,6 +12,7 @@ "deploy": "run-wrangler-deploy", "dev": "run-wrangler-dev", "fix:workers-types": "run-wrangler-types", + "migrate": "run-wrangler-migrate", "test": "run-vitest" }, "dependencies": { diff --git a/apps/studio/wrangler.jsonc b/apps/studio/wrangler.jsonc index 82cc8b0..0f6c6c8 100644 --- a/apps/studio/wrangler.jsonc +++ b/apps/studio/wrangler.jsonc @@ -6,14 +6,17 @@ "compatibility_flags": ["nodejs_compat"], // Shared `recflare` D1. Room co-owners come off the `room` blob and who is in a // subroom comes off `presence` (other workers own those tables). This worker - // owns the cloud-build tables, migrated from `migrations/`. The "local" - // placeholder is replaced with RECFLARE_D1 at deploy time. + // owns the cloud-build tables, migrated from `migrations/`; its own + // migrations_table keeps that history separate from the other workers' + // migrations on the shared database. The "local" placeholder is replaced with + // RECFLARE_D1 at deploy time. "d1_databases": [ { "binding": "DB", "database_name": "recflare", "database_id": "local", - "migrations_dir": "migrations" + "migrations_dir": "migrations", + "migrations_table": "d1_migrations_studio" } ], // Shared `recflare-cdn` R2 bucket (also bound by `rooms` / `cdn` / `storage`).