Found on http://batch.dev.kyuno.fr/: GET /reference/diets and /reference/allergies both returned [] — onboarding's "régime alimentaire" step and the profile's food-preferences tab had nothing to show. Cause: the Docker image's CMD only ran `prisma migrate deploy` (schema), never the seed that populates Diet/Category/Allergy. Adds src/scripts/seed-runtime.ts — a runtime-only seed entry point (distinct from prisma/seed.ts, the dev-time one wired to `prisma db seed`/`prisma migrate reset` via tsx importing from ../src, which isn't shipped in the runtime image). This one lives under src/ so tsc compiles it into dist/ alongside everything else, and runs via plain `node`, reusing the same idempotent seedReferenceData() (upserts by unique name) already used by prisma/seed.ts and test-support/reset-db.ts. Dockerfile CMD now runs it between migrate deploy and starting the server — safe on every container start/restart, confirmed idempotent locally (no duplicates, no error on a second run against an already-seeded database). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
27 lines
1.1 KiB
TypeScript
27 lines
1.1 KiB
TypeScript
import { prisma } from "../db/prisma.js";
|
|
import { seedReferenceData } from "../db/reference-seed-data.js";
|
|
|
|
/**
|
|
* Runtime seed entry point for the production Docker image — run via
|
|
* `node dist/scripts/seed-runtime.js` in apps/api/Dockerfile's CMD, after
|
|
* `prisma migrate deploy` and before starting the server.
|
|
*
|
|
* Deliberately separate from `prisma/seed.ts` (the dev-time entry point
|
|
* wired to `prisma db seed`/`prisma migrate reset`): that one imports
|
|
* `seedReferenceData` from `../src/db/...` and runs via `tsx`, but the
|
|
* runtime image only ships compiled `dist` output, not `src` (see the
|
|
* Dockerfile) — this lives under `src/` instead, so `tsc` compiles it
|
|
* alongside everything else, and it runs under plain `node`, no tsx
|
|
* needed at runtime.
|
|
*
|
|
* Safe to run on every container start: `seedReferenceData` upserts by
|
|
* each row's unique name, so re-running it against a database that
|
|
* already has this data is a no-op.
|
|
*/
|
|
seedReferenceData(prisma)
|
|
.then(() => prisma.$disconnect())
|
|
.catch(async (err) => {
|
|
console.error(err);
|
|
await prisma.$disconnect();
|
|
process.exit(1);
|
|
});
|