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.