Bien, lo último antes de ir al código real es la función Code-Gen Mercurius que utiliza la idea del archivo JQL para convertir el archivo JQL a TypeScript. Entonces, en la ruta de destino como origen del generador de resolutores TS, puedes encontrar todas las definiciones de tu servidor. Puedes encontrar, por ejemplo, la mutación, la consulta y la mutación. Este tipo es utilizado por el desarrollador para asegurarse de que el servidor respete la definición JQL.
Ahora, si vuelvo a la parte de GraphQL, cuando configuras esto, solo tienes que prestar atención o cuidar de crear el código para tu negocio. Entonces, para crear el cargador y el resolutor. Hoy, solo hablaré sobre el resolutor porque solo tengo 20 minutos, pero es similar para el cargador. Dentro de la carpeta de resolutores, puedes encontrar el indexador. El resolutor es un objeto simple con tres propiedades, la consulta, la mutación y la suscripción. Y en mi caso, creo una carpeta simple para cada una de estas. Entonces, dentro de la consulta, la mutación, puedes encontrar todas las mutaciones para la pizza, para el topping y así sucesivamente. Dentro de la consulta, puedes encontrar todas las consultas para la pizza, el topping y así sucesivamente. Y bastante simple en este caso. Quiero mostrarte, por ejemplo, la mutación para crear una pizza. En este caso, la implementación es bastante simple. Entonces, utilizando esta sintaxis, la sintaxis típica de TypeScript, creo una nueva función llamada createPizza. Y utilizando el tipo de la mutación, le digo a esta función que debe respetar la firma de createPizza en los tipos de mutación. De esta manera, estoy seguro de que el código debe respetar el archivo JQL descrito anteriormente.
Entonces, la función es bastante simple. Así que está el padre. En este caso, no tienes que prestar mucha atención al padre. Ese es el primer parámetro. El segundo parámetro son los datos que llegan del cliente, en este caso, la pizza, el nombre y la lista de ingredientes. El tercer parámetro contiene el contexto de GraphQL, si quieres, la instancia de la aplicación Fastify, y también el objeto pubsub en este caso. Usando la aplicación, puedes obtener, por ejemplo, el registro, en este caso, Pino, o el DbContext. El DbContext, como puedes ver, es el cliente Prisma, registrado anteriormente con el complemento. Y de esta manera, puedes llamar, por ejemplo, a DbContext.pizza para insertar la pizza en tu base de datos. El DbContext es bastante simple de usar, así que puedes usar DbContext, y puedes tener la pizza, en nuestro caso, el topping y la receta, si quieres. Cada modelo crea un objeto con todos los posibles métodos para insertar, seleccionar, actualizar y eliminar.
Comments