GraphQL tipado
Fóir genera un esquema GraphQL a partir de tus modelos, con consultas, mutaciones e inputs tipados para cada uno. Una comprobación de la CLI avisa a tu build cuando los tipos que has confirmado ya no coinciden con el proyecto.
Lo que genera cada modelo
Cada modelo que contiene registros produce una consulta singular, una consulta plural que devuelve una conexión paginada por cursor, mutaciones para crear, actualizar y eliminar, y inputs tipados de filtro, ordenación y actualización. Los modelos con publicación activada reciben además mutaciones de publicar y despublicar. Tus campos están en el nivel superior del tipo de registro, junto a campos del sistema que empiezan con un guion bajo.
Cuando cambia el esquema de producción
El esquema se sirve en dos canales, borrador y publicado. Editar un modelo cambia el borrador, y las claves de producción mantienen el esquema publicado hasta que una publicación lleve el cambio. Un modelo u operación nuevos se publican al crearse, igual que una actualización de modelo que solo añade campos opcionales. Tras una publicación, el esquema público cambia para todos los consumidores en cuestión de segundos.
La comprobación en tiempo de build
foir types genera los tipos de TypeScript y las selecciones del cliente tipado a partir del proyecto. Con --check no escribe nada y termina con un código distinto de cero cuando el archivo confirmado difiere de una generación nueva. Ejecutado en CI, hace fallar el build cuando el proyecto ha cambiado y tus tipos confirmados no. Los tipos se generan por clave de API, así que una operación que la clave no puede realizar no aparece, y llamarla es un error de compilación.
La comprobación en tiempo de ejecución
El cliente generado avisa una vez por instancia de cliente cuando el esquema del servidor ha cambiado desde la generación. Lanza FoirSchemaDriftError en una llamada tipada que depende de algo que ya no se sirve, como un campo o argumento eliminado.
Hasta dónde llega el tipado
En los tipos generados, la ordenación es un tipo cerrado y comprobado. Los filtros se tipan como unknown, y lo mismo los argumentos y resultados de las operaciones de espacio de nombres. El GraphQL escrito a mano puede tiparse con graphql-codegen contra el esquema, como un paso de build que gestionas tú.
Lee el detalle
La guía de GraphQL enumera las consultas, mutaciones e inputs que se generan para un modelo y dónde explorar el esquema.