11-10-2025Ongeveer 1 minutenOngeveer 214 woorden
Begrip: Afgeleide Prisma interfaces
Soms zijn de interfaces die Prisma genereert niet voldoende, deze interfaces beschrijven namelijk één volledige tabel. Als je een query schrijft die slechts een deel van een tabel (DTO) ophaalt, of die data uit meerdere tabellen combineert moet je hiervoor een interface voorzien.
Aangezien het aantal mogelijke combinaties ontzettend groot is, kan Prisma de interfaces niet voorzien. Enerzijds omdat er anders zodanig veel interfaces zouden zijn dat intellisense traag wordt, anderzijds omdat de naamgeving van deze interfaces niet deterministisch is en dus niet geautomatiseerd kan worden. In plaats daarvan voorzien Prisma helpers om deze interfaces te genereren.
Dit process bestaat uit twee stappen:
- Definieer een object dat aan de select, omit of include properties van de Prisma-methodes meegegeven kan
worden en valideer deze via dePrisma.TableInclude,Prisma.TableOmit,Prisma.TableSelectinterfaces, hier wordt table natuurlijk vervangen met de naam van de tabel. - Gebruik het object dat hierboven gedefinieerd is om een nieuw type te generen, hiervoor gebruik je
Prisma.TableGetPayload<{include: typeof objectUitPunt1}>,Prisma.TableGetPayload<{omit: typeof objectUitPunt1}>ofPrisma.TableGetPayload<{select: typeof objectUitPunt1}>.
import type {Prisma} from '@/generated/prisma/clinet'
export const fooWithBarInclude = {
bar: {
select: {
column1: true,
column2: true,
},
},
} satisfies Prisma.FooInclude
export type FooWithBar = Prisma.FooGetPayload<{include: typeof fooWithBarInclude}>