De acuerdo. De acuerdo. Así que eso fueron cinco minutos, creo. ¿Alguien lo logró? ¿Alguien pudo actualizar las definiciones de tipo de GraphQL para incluir autor y tema y luego crear las mutaciones para agregarlos al grafo? ¿Alguien pudo hacer eso? De acuerdo, veamos la solución. Nos quedan unos 40 minutos y tenemos una sección sobre lógica personalizada en la sección de autorización, que quiero asegurarme de cubrir. Así que tal vez echemos un vistazo rápidamente a las soluciones y luego sigamos adelante. Mi contenedor ha sido hibernado, lo actualizaré. A veces esto sucede con Code Sandbox que entra en hibernación, necesitamos reiniciarlo. Creo que en general Code Sandbox ha sido bastante bueno para este tipo de talleres. Creo que hay un equilibrio entre el uso de herramientas en línea como esta o configurar tu entorno de desarrollo local, lo cual a veces puede ser un desafío en este tipo de talleres en línea, pero me gusta Code Sandbox, así que de acuerdo, dijimos que necesitamos dos tipos, así que vamos a agregar un autor. El autor tiene, creo que solo un nombre y tema, que probablemente también solo tiene un nombre, haremos que estos campos sean requeridos o no nulos, eso es lo que significa este signo de exclamación, para crear un nodo de autor, necesita tener un nombre, para crear un nodo de tema, necesita tener un nombre y luego necesitamos un campo de relación, así que un autor, un autor puede haber escrito uno o más libros, así que haremos que sea un campo de arreglo de objetos y queremos usar nuestra directiva de relación, así que el autor, digamos que el autor escribió un libro, y luego la dirección, así que vamos desde el autor hacia el libro, autor, escribió, libro, así que en este caso, desde el autor, la dirección será hacia afuera, y similar para el tema, el tema también tendrá, llamaremos a ese campo libros, y el tipo de relación, que llamaremos, un libro trata sobre un tema, y en este caso, vamos a ir desde el nodo del libro, el libro tratará sobre un tema, así que para el tipo de tema, la dirección será hacia adentro. Y también, en el tipo de libro, queremos poder ir desde el libro hacia el autor y desde el libro hacia el tema, así que diremos autores, creo, así que un libro puede tener varios autores, así que creo que esto también debería ser un campo de arreglo y necesitaremos un tipo de relación, que dijimos que era escribió, así que desde el punto de vista del libro, la dirección será hacia adentro porque vamos desde el autor hacia el libro. Y similar para el tema, así que un libro puede tener cero o más temas realmente y una directiva de relación, así que la relación que dijimos para esto era sobre, ups, falta nuestra comilla doble allí, así que en este caso, la dirección será hacia afuera, así que estamos diciendo que el libro trata sobre temas, Andrés dice que se está retirando. Sí, gracias por unirte, sí, creo que se enviará una grabación y sí, gracias por unirte, de acuerdo, guardaremos esto, no lo comandé, también podemos ir aquí arriba a archivo guardar, puedes ver que esto provoca un reinicio de nuestra aplicación de API de GraphQL, y creo que necesitamos actualizar este navegador para que el playground de GraphQL vuelva a cargar las definiciones de tipo, pero ahora si miramos en los documentos, deberíamos tener autores, sí, tenemos autores y temas, genial.
De acuerdo, tenemos esta tabla, necesitamos escribir mutaciones de GraphQL para agregar los autores a nuestros libros. Así que hagámoslo, tenemos un libro llamado Inspired que fue escrito por Marty Kagan. Así que veamos cómo hacer eso. Vamos a eliminar eso, esto va a ser, sé que va a ser una mutación. Y necesitamos decidir cómo queremos comenzar. Hay un par de formas en las que podríamos abordar esto. Podríamos hacer una actualización de libros y buscar el libro y luego conectar, o hacer una operación de creación desde el libro para crear un nuevo autor, o podríamos hacer una creación de autores. Tal vez empecemos con eso. Así que diremos Crear Autores, el autor tiene un nombre, pero Marty Kagan y luego Marty Kagan escribió un libro. Ya tenemos la base de datos. Así que esto va a ser una conexión, no una creación. Así que vamos a conectar donde el nodo. Puedes notar que tenemos que decir, conectar donde el nodo si tuviéramos propiedades en la relación. Aún no hemos hablado de esto, pero hasta ahora hemos estado almacenando propiedades en los nodos. Si tuviéramos propiedades en las relaciones, tendríamos otra opción aquí para filtrar basado en el objeto de borde, que básicamente es, de todos modos, por eso tenemos el nodo aquí, parece una capa adicional, pero simplemente porque no tenemos el filtro de borde porque no tenemos propiedades de relación. De todos modos, queremos filtrar donde el título sea Inspired y obtendremos un poco más de espacio para poder ver lo que dice esto. Luego traeremos autores, nombre, y libros en el título del libro. Y también queremos que la información nos diga si creamos algún nodo. De acuerdo, identifiquemos esto y veamos esto. Entonces, ¿qué estamos haciendo? Estamos diciendo crear autores y aquí está el objeto de entrada, crear un autor, establecer el nombre como Marty Kagan, luego para el campo de relación de libros, nos vamos a conectar a los libros existentes donde el título del libro sea Inspired. Así que ejecutemos eso. Y decimos que hemos creado a Marty Kagan, e Inspirado de la comunidad, hemos creado un nodo podemos verificar esto si vamos a Neo4j, busquemos autor. Aquí está Marty Kagan, puedes hacer doble clic para recorrer, escribiste este libro inspirado, que trata sobre la gestión de productos. Genial, de acuerdo, excelente. Así que eso fue actualizar nuestro esquema, agregar autores y temas. Voy a omitir el resto de los autores y los temas para poder avanzar y tener tiempo para cubrir la sección restante, pero puedes imaginar cómo usamos esas operaciones de mutación anidadas para crear los autores y temas. Puedes encontrar las soluciones enlazadas en el code sandbox también en el archivo readme si quieres revisarlo. Genial, sigamos adelante. Así que hemos hablado de escribir nuestras definiciones de tipo que luego impulsan la base de datos, impulsan el esquema de GraphQL que se genera que nos brinda las operaciones CRUD para crear data. ¿Qué pasa con la lógica personalizada? ¿Cómo encaja eso? Eso es de lo que vamos a hablar en esta sección. Así que voy a hacer algunas configuraciones aquí, puedes seguir si quieres, pero no es necesario. Borremos nuestra base de datos. Porque estábamos haciendo ese ejercicio y tenemos esquemas algo diferentes, voy a hacer otro, coincidir a, desconectar, eliminar a. Así que borremos todo en la base de datos y luego tenemos un nuevo code sandbox. Copiemos el enlace de este, peguemos el enlace en el chat. Hagamos eso de nuevo. Este es un nuevo code sandbox, lo que significa que necesitaremos actualizar nuestro archivo .env nuevamente. Así que voy a copiar eso de este code sandbox. Voy a hacer clic en el enlace que pegué en el chat y luego queremos bifurcar este code sandbox. Para que tengamos uno que sea privado para nosotros y voy a pegar mis credenciales en ese archivo .env y guardarlo. Nuestra aplicación de API se reiniciará. Así que este esquema ahora incluye muchas otras cosas. Incluye el autor. Sí, el autor y el tema. También tenemos estos campos de directivas Cypher ahora donde hemos agregado algo de lógica personalizada. Incluso tenemos un nuevo tipo de clima y si miramos en Index.JS vemos que realmente hemos implementado un resolvedor aquí. Entonces, vamos a hablar de este code sandbox en el contexto de agregar lógica personalizada. Así que si quieres seguir con ese code sandbox, puedes ver algo de código actualizado, pero para terminar la configuración, necesitamos ejecutar esta mutación para crear algunos datos basados en el esquema completo correcto. Así que eso incluía autores y temas. Así que eso se está ejecutando para guardar algunos datos en nuestra instancia de Aura. Puedes ver que estamos creando los autores para cada libro, los autores para cada libro, un puñado de libros, y luego creando clientes y algunos pedidos. Supongo que hay un par de operaciones de notaciones aquí. De acuerdo, genial. Así que hablemos de la lógica personalizada. Entonces, obtenemos mucho que se genera para nosotros de forma gratuita, básicamente, por la biblioteca Neo4j GraphQL en función de nuestras definiciones de tipo.
Comments