Aula 27
Como Criar uma Mutation para Remover um Recorde (Aula Tutorial de GraphQL)
Summary
Resumo da Aula sobre Mutação para Deletar Companhia
Na aula, foi abordado como implementar uma mutação para remover uma companhia em um sistema simulado de gerenciamento. A seguir estão os principais pontos discutidos:
Implementação do Método destroy
- Objetivo: Adicionar um método que permita a remoção de uma companhia pela sua ID.
- Arquivo: O código foi editado no arquivo
rm-compania.js
. - Novo Método: Foi criado o método
destroy
, que aceita oid
da companhia como argumento. - Uso de Promessas: O método utiliza uma
Promise
com umsetTimeout
de 300 milissegundos:- Verifica se a companhia existe utilizando o método
filter
. - Assegura que apenas a companhia correspondente ao ID fornecido seja removida da lista.
- Verifica se a companhia existe utilizando o método
- Retorno: O método geralmente não retorna valor (pode retornar um objeto vazio). Se a companhia não for encontrada, retorna a lista sem alterações.
Atualização do Esquema GraphQL
- Adição da Mutação: A mutação foi adicionada ao esquema GraphQL:
- Um novo campo
removerCompanhia
foi criado. - Especificação do tipo de retorno como
companhiatype
. - O ID da companhia a ser removida foi definido como um argumento obrigatório.
- Um novo campo
Testes da Mutação
- Teste no Navegador:
- Um exemplo de chamada para a mutação foi criado.
- Se o ID não for fornecido, uma mensagem de erro será retornada.
- A mutação foi testada com sucesso, recebendo a confirmação da remoção da companhia.
- O retorno de um objeto vazio após a remoção foi abordado, explicando que deve sempre haver um campo para retornar, mesmo que não exista um valor.
Conclusão
A aula conclui com a implementação final bem-sucedida de uma mutação para remover companhias, destacando a importância de testar as funcionalidades e a estrutura do GraphQL.
Nota: Assegure-se sempre de fornecer os argumentos necessários em chamadas de mutação, e lembre-se de que a remoção não retorna dados específicos, a não ser por um objeto vazio, indicando que a operação foi realizada com sucesso.
Video Transcript
Temos de volta, vamos na esta aula fazer a mutação para poder deletar, remover uma
companhia.
Vamos atualizar o rm simulado aqui, o rm-compania.js.
Vamos ver que já temos o findAll, o find, o create, agora vamos fazer o método aqui
para simular a destruição, a delação do recorde.
Vamos chamar isso de destroy, e o que a gente precisa só para remover uma companhia é
o id da companhia, tá certo?
Então vou fazer a companhia id com um argumento para esse cara.
De novo a gente está dentro do arquivo rm-compania.js.
Aqui a gente criou um novo método chamado destroy que leva como argumento o id da companhia,
que eu chamo companhia id.
Então vamos fazer aquela mesma coisa.
Return new promise, resolve reject, set time out, 300 milissegundos.
Então vamos lá.
Primeiro a gente tem que ver se realmente a companhia existe.
Então você pode até checar com o find se ela existe ou não, e se não existir você
pode retornar no algo.
Eu vou só...
Vamos ver aqui.
Ou a gente...
Vamos até fazer o seguinte, vamos só usar o filter, aquele método que você pode aplicar
uma lista para filtrar a certa companhia, excluir, criar uma lista e excluir aquela
companhia, cujo id corresponde ao id fornecido, tá?
Então vamos fazer só isso mesmo.
Então vou falar companhias, companhias.filter, companhia.
Então a gente vai fazer o seguinte, a gente vai deixar passar todos os objetos, acerto
aquela companhia cujo id é o id fornecido, tá?
Então você vai...
E você deixa passar qualquer companhia cujo id não corresponde ao id fornecido.
Então a gente vai terminar com a lista, excluindo aquela companhia se existir, né?
Se não existir não vai encontrar e retornar a mesma lista, tá?
Normalmente do destroy não se retorna nada com o valor.
Então eu posso resolver, sei lá, com objeto em branco vazio, tá?
Você poderia também a comedição de checar se a companhia realmente existiu ou não,
e se ela existe, você poderia...
Se ela não existe, você poderia jogar um reject pra simular um 4 ou 4 não encontrado.
Eu deixo você ir com o exercício pra você se quiser fazer, tá?
Então vamos lá aqui, salva esse.
Temos agora o método destroy do companhia.
Então vamos lá ver.
Voltando aqui no nosso esquema, vamos lá pra mutação, se lembra?
O meu texto que tá dentro do novo gráfico é o esquema.
E vamos adicionar a nova mutação aqui pra poder remover a companhia, tá?
Então agora do fields do meu text type você vai adicionar remover companhia.
Então vamos lá.
Remover companhia.
Sou um novígula.
Então remover companhia realmente não retorna nada, mas vamos só escrever companhia type
aqui com o valor de retorno.
Agora os orgs vai ser o quê?
O id da companhia pra ser removido.
Id type, GraphQL index, tá?
São argumentos fornecidos pelo cliente.
Pra gente ter que dizer o resolve pra dizer como vai remover esse cara.
Então pra remover você precisa do orgs, que é o segundo argumento daqui.
Value orgs.org.id.
E acho que é só isso, vamos ver.
A gente vai chamar companhia.destroy com o id da companhia que é giveind.org.id.
E você vai retornar isso.
Isso cara, retorno promessa que resolve com um objeto vazio.
Tá?
Então vamos lá.
Ah, esqueci também que você deve fazer o id ser obrigatório.
Então new, GraphQL.
Não, não.
Pra ele já jogar o erro, se você não fornecer o id, tá?
Por isso vamos testar essa mutação no navegador.
Vou deixar aquela mesma.
Vou criar a nova mutação aqui, mutext.
Remover companhia, dá o nome pra essa mutação pra poder escolher lá no botão de play.
Remover companhia de novo, porque esse aqui é o nome do campo que aparece lá na nossa definição da mutext.
E você tem que passar argumentos, né?
Aqui ó, o argumento vai ser o id, a companhia pra ser removido.
Vamos ver 2.
Note que eu não passo a id, o que acontece aqui?
Vamos ver.
Remover companhia.
Deward syntax.
Deixa eu remover os parênteses.
Remover companhia, ai não deu eu.
Deixa eu voltar a id aqui.
Pronto.
Field.
O campo remover companhia.
Argumento id é obrigatório, né?
Mas não for fornecido, então tem que fornecer.
Por isso que a gente adicionou o GraphQL.
Não, não.
Agora vamos aqui remover companhia 2.
Valdade de novo.
Então...
Ele fez isso com sucesso porque a gente recebeu alguma coisa, não recebeu não eu.
Você pode olhar seu rodalbe e ter companhias, que realmente remover companhia número 2.
Então o que acontece se eu remover id aqui?
Vamos ver.
Remover companhia.
Então ele dá esse erro, então você tem que pelo menos ter alguma coisa pra...
Espera que você espera ser retornado.
Embora que não tenha realmente um id...
Quando você remove, né?
Não tem id porque a nossa função destroy retorna o objeto vazio.
Então tem esse lance aqui de sempre ter que ter algo pra pelo menos um campo pra retornar ainda que o campo não exista, certo?
Então é meio esquisito, mas é assim que é.
Então você passa o id da companhia pra remover e põe aqui pelo menos o id.
Embora que você realmente não vai receber nenhum id, então só recebe não.
Mas isso realmente significa que deu tudo certo, tá?
Então é isso, uma mutação pra remover a companhia.
Pra essa aula é só e até a próxima.
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: