GraphQL tipado

O Fóir gera um schema GraphQL a partir dos seus modelos, com consultas, mutations e inputs tipados para cada um. Uma verificação da CLI avisa o seu build quando os tipos que você commitou deixam de corresponder ao projeto.

O que cada modelo gera

Cada modelo que guarda registros produz uma consulta singular, uma consulta plural que devolve uma conexão paginada por cursor, mutations para criar, atualizar e excluir, e inputs tipados de filtro, ordenação e atualização. Modelos com publicação ativada recebem também mutations de publicar e despublicar. Seus campos ficam no nível superior do tipo do registro, ao lado de campos de sistema que começam com um sublinhado.

Quando o schema de produção muda

O schema é servido em dois canais, rascunho e publicado. Editar um modelo altera o rascunho, e as chaves de produção continuam com o schema publicado até que uma release leve a alteração. Um modelo ou uma operação novos são lançados assim que são criados, assim como uma atualização de modelo que só adiciona campos opcionais. Depois de uma release, o schema público muda para todos os consumidores em segundos.

A verificação em tempo de build

foir types gera os tipos TypeScript e as seleções do cliente tipado a partir do projeto. Com --check ele não grava nada e sai com código diferente de zero quando o arquivo commitado difere de uma geração nova. Executado no CI, isso faz o build falhar quando o projeto mudou e os seus tipos commitados não. Os tipos são gerados por chave de API, então uma operação que a chave não pode executar fica ausente, e chamá-la é um erro de compilação.

A verificação em tempo de execução

O cliente gerado avisa uma vez por instância de cliente quando o schema do servidor mudou desde a geração. Ele lança FoirSchemaDriftError em uma chamada tipada que depende de algo que não é mais servido, como um campo ou argumento removido.

Onde a tipagem termina

Nos tipos gerados, a ordenação é um tipo fechado e verificado. Os filtros são tipados como unknown, assim como os argumentos e resultados das operações de namespace. O GraphQL escrito à mão pode ser tipado com graphql-codegen contra o schema, como uma etapa de build que fica com você.

Leia os detalhes

O guia do GraphQL lista as consultas, mutations e inputs gerados para um modelo e onde explorar o schema.