Schema-first x code-first
Pergunta
Quais as diferenças entre definir um schema GraphQL 'schema-first' (SDL) e 'code-first', e o trade-off de cada um?
Resposta esperada
Schema-first: você escreve o schema em SDL (`type User { ... }`) como fonte da verdade, e implementa resolvers que precisam CASAR com ele. O schema é legível, serve de contrato compartilhável com o time de front, e ferramentas geram tipos a partir dele. Risco: schema e resolvers podem divergir se não houver checagem (types gerados + testes ajudam). Code-first: você define os tipos em código (decorators/builders da lib — Nexus, TypeGraphQL, Pothos) e o SDL é GERADO a partir disso. Vantagem: uma fonte da verdade (o código), tipos do resolver e do schema sempre em sincronia, refactor com o compilador. Custo: o SDL vira artefato de build (não dá pra 'só ler o arquivo'), e você fica preso à lib. Times TS costumam preferir code-first (Pothos) pela sincronia de tipos; times poliglotas ou com forte separação front/back às vezes preferem o contrato explícito do schema-first.
Por que perguntam isso
Pergunta pleno de GraphQL. Sinal bom: 'code-first mantém tipos do resolver e do schema em sincronia' e citar Pothos/Nexus.