logo

midudev


Transcribed podcasts: 146
Time transcribed: 5d 4h 27m 31s

This graph shows how many times the word ______ has been mentioned throughout the history of the program.

Vamos a añadir otra query más. ¿Por qué? Porque ahora te quiero enseñar otro tipo, otra forma de crear datos que tienes en GraphQL y es utilizando los enums.
Vamos a hacer una query que lo que haga es filtrar las personas que tienen o no tienen teléfono. Voy a enseñarte cómo haríamos, ¿vale?
Y luego, y ahora lo implementamos directamente. Vamos a hacer una query aquí que sea all persons, esto ya lo tendríamos, pero que podamos pasarle un parámetro que le digamos si tiene teléfono y decimos yes, ¿vale?
Que tenga teléfono y de estos vamos a recuperar el nombre y el teléfono ya que estamos, ya que tiene un teléfono, ¿vale?
Ahora mismo pues no funciona correctamente porque por supuesto no entiende este argumento, pero fíjate como siempre es predecible GraphQL, no te deja hacer lo que te dé la gana.
Normalmente puede estar bien. Así que nos vamos a las definiciones, todo siempre hay que definirlos.
Vamos a utilizar una nueva cosa que se llama enum, que nos va a permitir utilizar esto a la hora de indicar el parámetro, ¿vale?
Puedes utilizar enums, es algo muy parecido a TypeScript, que al final lo que va a hacer es que a cada uno de los valores le va a dar un valor que no necesitas saber cuál es,
pero vas a poder diferenciar lo que es lo interesante.
Así que este enumerable sería un yes no, le podemos llamar bolean, vamos a llamarle yes no, para indicar el enum que puede ser o sí o no. Punto pelota.
Ahora con este enum lo vamos a utilizar como parámetro para la query. ¿Qué query? Pues la de all persons, ¿no?
Hemos dicho que ahora va a ser esto un parámetro, que va a ser font, y utiliza el enum yes no, o sí o no.
Y este valor yes no es el que le vamos a poder pasar a la query directamente, utilizando justamente este, yes o no.
Pero ¿dónde está la gracia? ¿Dónde se está haciendo la conexión de que el sí sea sí, el no sea no?
Ahí es donde está la magia, y la magia la vamos a ver ahora. En los resolvers, que por cierto en castellano no sé exactamente cómo,
he visto algunas traducciones muy chungas como solucionadores, no sé si llamarle solucionadores,
pero vamos a seguir llamándole resolvers porque solucionadores me parece muy raro. Vale.
Ahora que tenemos el yes no este, esto devolvería un array de personas, vamos a ver cómo podemos utilizar el yes no.
Para esto tenemos que irnos justamente donde teníamos la query, el resolver del all persons, y teníamos este método aquí.
Ahora necesitamos el root y el arcs. Vamos a complicar esto un poquito más, ¿vale?
Ahora, en arcs le estamos pasando el parámetro del font, así que si no tenemos un arcs del font,
porque hemos visto aquí, lo hemos hecho opcional, fíjate que no hemos puesto la exclamación, ¿vale?
Así que es opcional. Si es opcional es que no estoy filtrando, por lo tanto vamos a devolver de turn todas las personas.
Y ya está, más sencillo. No filtramos, toma, aquí tienes todas las personas.
Pero si sí que tenemos el teléfono, lo que tendríamos que hacer, vamos a hacer aquí un filtrado,
by font, y que las personas, sí, arcs font, y aquí es donde está la magia.
Arcs font, el parámetro que le iba a llegar, el argumento, puede ser un enum.
¿Y cuáles son los valores que hemos dicho que puede tener? ¿Yes o no?
De forma interna no sabemos los valores que le pone, pero a la hora de hacer la query sí que podemos referirnos a ellos.
Así que vamos a utilizar un string. Esta es la forma de mapearlo.
Vamos a decir que font es un enum que puede recibir yes o no, y le estamos pasando como string desde fuera el yes.
Si es yes, pues entonces tenemos que filtrar los que tengan el person que sí que tengan un font.
Y si no, que person, pues no tenga teléfono.
Este by font que hemos hecho aquí es un filtro que podemos utilizar a la hora de filtrar las personas.
Con el filter y le utilizamos el by font.
Esto, bueno, lo he escrito así, pero lo podríamos escribir para que lo vean más claro de otra forma, ¿vale?
Podríamos hacer person, filter, person, y lo que hacemos de este person aquí sería esto, ¿vale?
Y devolver la persona que tal.
Básicamente aquí lo que he hecho es extraer el callback en una función fuera,
y aquí lo que estaría haciendo es hacerlo directamente.
Cualquiera de las dos funciona, la que te guste más, en este caso no sé por qué, pues la separé.
Creo, supongo que es donde en Fullstack o pensarla así.
Pero bueno, pues eso, hacemos una constante que sale el by font, que cada uno recibe la persona, ¿vale?
Porque esto es el callback que llega al filter.
Si el font es yes, pues vale, vamos a filtrar las personas que sí que tienen teléfono,
si no, pues las personas que no tienen teléfono.
Y ya está.
Con esto teníamos el resolver ya hecho y estaríamos utilizando un enum,
que lo único que necesitamos saber es que hay que referirse a él así.
Así que de esta forma, además, podrías hacer enums de todo tipo.
Por ejemplo, weekday, ¿vale?
Podría ser un weekday, podrías usar monday, twesday, eso podría ser un enum, pues cosas así.
O enum, que sea state, node state, ¿vale?
Para nuestra aplicación de notas, que esté completed, que esté progress, cosas así.
Para eso serían los enums, ¿vale?
Para este tipo de variables que tienen como diferentes estados o que es sí y no.
Y es mucho mejor porque esto lo que nos hace es evitar utilizar otro tipo de string.
O sea, ahora que sabemos que es un sí o un no, y al decirle que este parámetro es un sí o un no,
verás que no le podemos pasar lo que nos dé la gana.
Ahora lo probaremos.
Ahora hemos ya refrescado el servidor.
Vamos a ver si esto funciona.
Ahora, he ejecutado la misma query que había dejado antes sin funcionar
y aquí me ha filtrado las personas que sí que tienen teléfono.
Si ahora aquí le pongo que no y le doy, pues me pone que itzy justamente está aquí y no tiene teléfono.
Y lo interesante es que como tenemos un enum, si hago un control espacio, me dice o sí o no.
Y para esto es la gracia.
Es que estamos teniendo un lenguaje entendible a la hora de hacer la query,
pero luego, una vez que hacemos la implementación, pues decimos,
ah, bueno, si es sí, yo entiendo a lo que se refiere.
Esto tiene un montón de utilidades, sobre todo en vuestros negocios,
vuestros productos, puede tener un montón de posibilidades.
Pero lo interesante es que está limitado.
O sea, ahora tú aquí ya no tienes por qué hacer, por ejemplo, yo qué sé.
Sí, pues no, esto justamente dirá no, el valor sí no existe en yes, no, enum.
O sea, que así de esta forma ya ves que es muy estricto con el tipo de datos y con todas estas cosas.