Aula 21
Atualizando nosso Banco de Dados Simulado com Métodos para Criar Recursos (Companhia)
Summary
Resumo da Aula sobre Mutações no GraphQL
Na aula de hoje, focamos na preparação para aprender sobre mutações (mutations) no GraphQL, essencial para atualizar bancos de dados e APIs. Especificamente, implementamos métodos para criar recursos, começando com a criação de uma companhia.
Passos para Criar uma Companhia
-
Método de Criação:
- Adicionamos o método
create
ao nosso modelo simulado no arquivoORM/companhia.votjs
. - Esse método aceita um objeto que representa a companhia, contendo as propriedades necessárias:
nome
,fundadaEm
, esite
.
- Adicionamos o método
-
Implementação do Método:
- Retornamos uma nova promessa, onde utilizamos um
setTimeout
para simular uma espera de 300 milissegundos. - Criamos uma variável
últimoID
, que mantém o controle do último ID utilizado.
- Retornamos uma nova promessa, onde utilizamos um
-
Adicionando a Nova Companhia:
- Usamos
companhias.concat
para adicionar a nova companhia à lista existente. - Incrementamos o
últimoID
sempre que uma nova companhia é criada, definindo o ID da nova companhia comoúltimoID + 1
.
- Usamos
-
Retornando a Resposta:
- Após a criação, retornamos a nova companhia para o cliente, usando
resolve
.
- Após a criação, retornamos a nova companhia para o cliente, usando
-
Validações:
- Não implementamos validações neste exemplo, assumindo que os dados são sempre enviados corretamente.
Próximos Passos
Na próxima aula, iremos implementar a criação de um produto, seguindo um raciocínio semelhante ao que utilizamos para a companhia.
Nota: A ordem dos passos pode variar, mas o fluxo básico é a inicialização do método, a manipulação da lista de companhias, e o retorno da nova companhia como resposta.
Video Transcript
Estamos de volta nessa aula. Nós vamos em preparação para aprender sobre mutações,
mutations no GraphQL. A gente tem que atualizar nosso banco, nosso API e ORM simulado para
poder ter métodos para criar recursos, nesse caso criar uma companhia ou criar um produto.
Então vamos fazer isso nessa aula. Voltamos ao editor de texto aqui. Então vamos fazer o seguinte,
primeiro vamos começar com companhia. A gente já viu que para aprender, por exemplo,
você pegar a lista de companhias, você fala assim, companhia.find. A gente criou esse método no
nosso modelo simulado, companhia aqui que está no arquivo ORM, barra companhia.votjs,
que tem o banco de dados simulado seguido dos métodos. Nesse caso vai encontrar,
obter todas as companhias, find all, obter uma companhia por id. Agora a gente vai fazer o
create para poder criar uma companhia. Então vamos lá. Aqui depois do find vamos adicionar
create. E nós vamos criar, basear no objeto que é dado como argumento a essa função aqui. Vamos
pegar um companhia como objeto. Ele vai ter várias propriedades nesse caso, vai ter id, não tem id,
o que a gente faz aqui. Vai ter nome, fundada em e e os outros propriedades,
fundada em site. Então esses três vão ser necessárias para criar uma companhia.
Então vamos supor que esses caras são passados como objeto e como esse parâmetro aqui.
Aí o que a gente vai fazer? Primeiro de tudo vamos sempre retornar a promessa. Então vamos fazer
aquela mesma coisa. Vamos retornar uma nova promessa. Faço uma função aqui, essa função,
vamos definir os dois parâmetros resolve e reject. Vamos dar um set time out para simular uma espera.
Eu vou usar 300 milis segundos. Agora vamos definir como adicionar uma nova companhia. Se você olhar lá
em cima a gente tem essa lista de companhias que a gente definiu com let. Para poder adicionar uma nova
companhia você vai fazer o seguinte, você vai pegar essa lista e adicionar um outro cara ao final.
E também a gente tem que aprender a verificar como pega o ID, como gerar um ID. Para gerar o ID
a gente vai usar uma variável aqui fora para saber qual foi o último ID que foi criado.
Então vamos fazer o ID, o negócio do ID. Vamos criar a variável aqui, let, último ID. Agora esse
último ID vai corresponder a o ID do último recorde que foi criado. Nesse caso tem o ID 1, 2 e 3.
3 é o último recorde, então o último ID vai ser 3. Então quando a gente for criar a nossa nova
companhia vamos adicionar essa lista e setar o ID para o último ID mais um. Não se esqueça de
atualizar o último ID aqui. Então vamos lá. A gente vai fazer o seguinte, pega a lista de companhias,
vamos setar esse cara para companhias.comcat, a companhia que foi dada com o argumento.
Não tem nenhuma validação esse negócio aqui. O que a gente vai só fazer aqui no simulado, vamos
supor que sempre os dados estão sendo enviados corretamente, validados, tá? Então ele vai pegar,
criar uma nova lista e adicionar essa nova companhia a lista de companhias. Mas não tem o ID. Então
se você não vai poder fazer o ID, vamos fazer o seguinte, eu vou colocar o objeto aqui e vou
copiar as propriedades da companhia que foi passada e adicionar o ID. Agora para o ID, vamos fazer o
seguinte, pega lá o último ID e seta para o último ID mais um para poder incrementar e usa esse
último ID aqui, tá? Quando você fizer isso, o último ID, nesse caso, se você iniciar com
aqueles três objetos, será o último ID 1, 2, 3, 3 mais 1 é 4. Então o último ID será 4 e o
ID dessa nova companhia será 4. Tá bom? E finalmente, quando você fizer isso, como resposta
a Frontend, você vai retornar ao cliente, nesse caso, a companhia. Na verdade você tem que retornar
normalmente a companhia que foi criada, então esse objeto aqui. Então vou extrair uma variável,
recortar, vou dizer nova companhia, vou criar uma variável nova companhia, ponho o objeto dentro
dessa variável e retorna a variável aqui. Na verdade resolve, porque é uma promessa. Então
revisando aqui, create, pega, atualize o ID, último ID incrementado, faz um objeto para
nova companhia, copia as propriedades, dados pelo, para aquele que chamou essa função, seta
o ID, agora atualiza a lista de companhias com o concreto, com a nova companhia, finalmente
dá o resolve com nova companhia. Salva isso. Por isso é só para a companhia, para criar
uma companhia. A próxima etapa agora é criar um produto, então vamos fazer isso na próxima
aula.
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: