Retour fonctionnel : les allergies et intolérances doivent être
distinguées, pas listées ensemble.
- schema.prisma: enum AllergenKind (ALLERGY|INTOLERANCE) + Category.kind
(@default(ALLERGY), migration écrite à la main comme précédemment —
`migrate dev` refuse en environnement non-interactif ici — SQL généré
via `prisma migrate diff`).
- reference-seed-data.ts: classification par substance (Gluten et
Sulfites = INTOLERANCE, les 12 autres = ALLERGY — réaction
non-immunitaire documentée vs réaction immunitaire classique).
Corrige au passage l'upsert : `update: { kind }` au lieu de `update:
{}` — un reseed doit pouvoir corriger `kind` sur une Category déjà
existante, pas juste no-op.
- reference.service.ts / packages/shared: AllergyView gagne `kind`.
PATCH /profile/allergies ne change pas (une seule liste d'IDs, kind
ne sert qu'au groupement d'affichage côté client).
- Tests Mocha (29 passing) + Cucumber (15 scenarios, inchangés).
Classifié par substance (pas par utilisateur) — documenté comme
limitation connue dans le README. Web (split UI + hot saving sur
/foyer) dans le commit suivant.
25 lines
982 B
TypeScript
25 lines
982 B
TypeScript
import type { AllergyView, DietView } from "@batch-cooking/shared";
|
|
import { prisma } from "../../db/prisma.js";
|
|
|
|
/** All reference dietary regimes, alphabetically — small, static list (see prisma/seed.ts). */
|
|
export async function getDiets(): Promise<DietView[]> {
|
|
return prisma.diet.findMany({ orderBy: { name: "asc" } });
|
|
}
|
|
|
|
/**
|
|
* All reference allergens, alphabetically. `Allergy` carries no `name` of
|
|
* its own — it's the selectable instance of a named `Category` (see
|
|
* schema.prisma) — so this resolves each allergen's display name from its
|
|
* category and flattens the split away for callers.
|
|
*/
|
|
export async function getAllergies(): Promise<AllergyView[]> {
|
|
const allergies = await prisma.allergy.findMany({
|
|
include: { category: { select: { name: true, kind: true } } },
|
|
orderBy: { category: { name: "asc" } },
|
|
});
|
|
return allergies.map((allergy) => ({
|
|
id: allergy.id,
|
|
name: allergy.category.name,
|
|
kind: allergy.category.kind,
|
|
}));
|
|
}
|