În abordarea Schema-First tradițională, dezvoltatorul scrie manual fișiere .graphql și trebuie să mențină sincronizate tipurile corespondente din TypeScript. Abordarea modernă Code-First (popularizată de librării precum Pothos sau TypeGraphQL) generează automat schema GraphQL direct din codul TypeScript, garantând autocompletare și siguranță absolută a tipurilor la compilare.
Definirea schemelor sigure cu Pothos GraphQL Builder
import SchemaBuilder from '@pothos/core';
const builder = new SchemaBuilder<{
Context: { userId?: string };
}>({});
// 1. Definim tipul de obiect Articol:
const ArticolType = builder.objectRef<{ id: number; titlu: string; autorId: number }>('Articol');
ArticolType.implement({
fields: (t) => ({
id: t.exposeInt('id'),
titlu: t.exposeString('titlu'),
lungimeTitlu: t.int({
resolve: (articol) => articol.titlu.length
})
})
});
// 2. Înregistrăm o interogare de tip Query:
builder.queryType({
fields: (t) => ({
articolDupaId: t.field({
type: ArticolType,
args: { id: t.arg.int({ required: true }) },
resolve: async (root, args, ctx) => {
return { id: args.id, titlu: "Ghid GraphQL Code-First", autorId: 1 };
}
})
})
});
export const schema = builder.toSchema();