Répond au besoin identifié précédemment : la table `sources` devient un vrai catalogue des sources implémentées, et une recette importée pourra être reliée à l'item source dont elle provient. - Source.key (unique) — même convention que Diet.key/Unit.key/ TechStep.key. Le catalogue est désormais synchronisé depuis le registre d'adaptateurs (recipe-source-registry.ts) via syncRecipeSources() (nouveau apps/api/src/db/recipe-source-sync.ts), plutôt que maintenu à la main comme DIETS/UNITS — reste vide tant qu'aucun adaptateur concret n'est enregistré. - Recipe.externalId (nullable) — l'identifiant de la recette côté source. Contrainte @@unique([sourceId, externalId]) : empêche d'importer deux fois la même recette (les recettes manuelles, aux deux colonnes nulles, ne sont jamais en conflit entre elles). - findImportedExternalIds(prisma, sourceKey, externalIds) — le pendant DB de markAlreadyImported (recipe-source-adapter.ts), ferme la boucle commencée dans la PR précédente pour distinguer les recettes déjà intégrées lors du browse. - syncRecipeSources() appelé après seedReferenceData() dans prisma/seed.ts et test-support/reset-db.ts. Toujours pas de route HTTP ni de champ sourceId/externalId exposé dans createRecipeSchema — la sauvegarde effective d'une recette importée reste pour une PR ultérieure. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
20 lines
867 B
TypeScript
20 lines
867 B
TypeScript
import { PrismaClient } from "@prisma/client";
|
|
import { syncRecipeSources } from "../src/db/recipe-source-sync.js";
|
|
import { seedReferenceData } from "../src/db/reference-seed-data.js";
|
|
|
|
// Standalone CLI entry point (not `src/db/prisma.ts` — that module pulls in
|
|
// the rest of the app's config/env plumbing this doesn't need), run via
|
|
// `prisma db seed` (see the `prisma.seed` entry in package.json) — either
|
|
// directly (`pnpm --filter api prisma:seed`) or automatically after
|
|
// `prisma migrate reset`. The actual data/logic lives in
|
|
// `src/db/reference-seed-data.ts`, shared with `test-support/reset-db.ts`.
|
|
const prisma = new PrismaClient();
|
|
|
|
seedReferenceData(prisma)
|
|
.then(() => syncRecipeSources(prisma))
|
|
.then(() => prisma.$disconnect())
|
|
.catch(async (err) => {
|
|
console.error(err);
|
|
await prisma.$disconnect();
|
|
process.exit(1);
|
|
});
|