Um momento
Aula 09
Cursos / GraphQL com Express (Servidor Backend API JSON)
Banco de Dados Simulado para nosso GraphQL

Summary

Resumo da Transcrição

Introdução

O apresentador reintroduz o assunto sobre GraphQL e menciona a necessidade de simular um back-end para o aprendizado. O projeto visa explorar o relacionamento entre companhias, produtos e modelos.

Estrutura do Projeto

  • Companhia: Contém vários produtos.
  • Produto: Possui vários modelos.
  • Exemplo: A Apple tem produtos como o iPhone, que inclui modelos como o iPhone X.

Simulação do Back-end

O back-end será simulado, e um banco de dados fictício será criado usando um ORM (Object-Relational Mapping).

Funções Planejadas:

  1. Companhia:

    • companhia.findall: Retorna todas as companhias.
    • companhia.findpouid: Retorna uma companhia específica pelo ID.
  2. Produto:

    • Criação de uma API externa simulada para obter produtos.
    • Métodos como findProduct e findProductById.
  3. Modelo:

    • Funções como modelo.findAll.

A ênfase é que no GraphQL, os dados podem ser obtidos de várias fontes, sejam elas centralizadas ou externalizadas.

Criando a Estrutura do Projeto

  1. Criar pastas para os módulos:

    • models: Para simular o banco de dados.
    • API: Para a API externa simulada.
  2. Companhia.js:

    • Definir uma função findAll que retorna uma promessa com uma simulação de uma requisição HTTP.
    • Simular um tempo de espera de 0.3 segundos antes de resolver a promessa com os dados das companhias.
    • Inicializar dados fictícios como Apple, Google e Microsoft.

Exemplo de código

let companhias = [];
function findAll() {
    return new Promise((resolve) => {
        setTimeout(() => resolve(companhias), 300);
    });
}
module.exports = { findAll };

Testes

O apresentador menciona a verificação do código através do console.log para garantir que a função está funcionando corretamente e retornando a lista de companhias.

Conclusão

O apresentador planeja voltar na próxima aula para integrar o uso do ORM em vez de chamadas diretas no esquema de GraphQL.


Próximo Passo: Continuar o desenvolvimento do projeto integrando o ORM para interagir com os dados simulados.

Video Transcript

Olá pessoal, estamos de volta. Então antes da gente continuar a falar onde o GraphQL, a gente precisa simular um back-end para poder fazer essas coisas. Se você se lembra, a gente quer, nesse projeto, aprender GraphQL usando o seguinte relacionamento. Primeiro você tem uma companhia. A companhia tem vários produtos. E cada produto tem vários modelos. Por exemplo, a Apple tem vários produtos, por exemplo, o iPhone. E o iPhone tem vários modelos, por exemplo, o iPhone X. E assim por diante. Então tem esse relacionamento. Para a gente poder trabalhar com isso, vamos fazer um back-end simulado. Então vai ser assim, olha. Então para a companhia, a gente vai fazer como se fosse um banco de dados simulado. Simulado com o ORM. A gente vai poder fazer assim o seguinte. A gente quer fazer uma função, um módulo que você pode fazer assim. A gente vai fazer companhia.findall, quando você chama esse cara retorna a promessa, que vai te dar todas as companhias que a gente vai fazer, simular. E você pode também fazer companhia.findpouid, tá? O id da companhia. Agora para o produto, eu quero... A gente poderia fazer a mesma coisa, mas para ilustrar que o GraphQL, você pode pegar os dados não só de um lugar central, mas de qualquer outro local. Pode ser até de um API externo. Eu vou fazer uma API externo simulada, tá? Então a gente vai fazer API externo simulada. E vamos fazer o seguinte, API, ponto. Vamos falar findProduct. Tá? Productus. Tem que ver o negócio aqui, o relacionamento. Se eu falar findProduct, vai ser todo. Se eu falar findProduct, puid, vai ser um produto específico. Pode ser que haja outros, por exemplo, findProducts pela companhia, alguma coisa assim. Então a gente vai ver depois. Eu gostaria também de fazer para o modelo, vou fazer o banco de dados simulado via ORM. Vamos fazer outro módulo. Modelo.findAll. E assim por diante. Alguma coisa assim, tá? A gente vai ver lá na frente. Então isso é para ilustrar que no GraphQL, não importa se os seus recursos estão centralizados num só local ou se estão descentralizados em vários outros locais diferentes. Pode ser que sua companhia esteja localizada no banco de dados local. Pode ser que o produto seja obtido via um API de outros serviços. Pode ser que o modelo tenha no banco de dados que não está local, mas está em outro local. Lugato, tá? Então vamos fazer esse cara aqui. Então vamos começar aqui dentro do nosso projeto. Vou criar uma pasta. Vamos chamar, sei lá, recursos. Não sei, API, recurso, qualquer coisa. Vamos chamar o R&M aqui. Modelos, que tal. Vou chamar models. E vou... Criar outra pasta para API. Vou chamar o R&M mesmo, desculpa. Vou chamar um pasta de API e outro de R&M. Vamos começar a companhia aqui. Primeiro de tudo, a gente quer pegar um listro de todos os companheiros. Então vamos aqui na pasta R&M, vou criar companhia.js. Esse modo. Então nesse modo vamos falar de um modo export. Vou passar um objeto aqui. Vou definir uma função chamada findAll. Aqui não me leva nenhum argumento. E nessa função, vamos fazer o seguinte. Vamos definir aqui fora, simular um banco de dados. Eu vou dizer let, companhias. E vou botar uma lista vazia, por enquanto. Aí quando você define, ele vai retornar a nova promessa, está certo? New promise. Para simular um pedido real de HTTP. Model setTimeout. Para simular aquela espera. Vamos dar uns 3 milissegundos, que é 300. Desculpa, 0.3 segundos, 0,3 segundos, que é 300 milissegundos. E vamos dar um resolve aqui com as companhias. Tá bom? Então, a gente dá o Model Exports aqui para disponibilizar o findAll, que retorna a promessa. E depois de 0,3 segundos, ele dá o resolve com a lista de companhias desse banco de dados falsos. Banco de dados simulado. Agora não tem nada, então seria legal se a gente tivesse já dados inicialmente. Se eu adicionar um aqui. Adicionar Apple, e nome, opa, o ID errado. O ID era int, não era? Deixa eu ver aqui, esquema era int. Então, o ID, o nome. Vamos botar outra, sei lá, qualquer companhia que você... Sei lá, Americanas. E... Uma outra companhia, sei lá, Microsoft. Vamos deixar três recordes aqui no nosso Banco de Dados Simulado para a companhia. Eu não sei o que a produto Americanas tem, na verdade, então vamos mudar. Vamos mudar isso para, sei lá, para a Google. Apple, Google Microsoft, deixe aí. Então, vai resolver essa lista quando você chamar. Esse cara está simulando como se fosse um OIM. Para testar isso, deixe eu só ir no index. E qualquer canto aqui, eu só chamar. Vou dar o require.barrorm.companhia.findall e dar o console log. Dá para testar aqui. Só vai ver o terminal aqui. Então, a promessa que está pene, a gente tem que lidar com essa promessa usando o ponto den. Ponto den e dar o console log dentro do ponto den. Den, resposta. Console log resposta. Salvar. Está aí, certo? Então deu certo. E tornou a lista. Então, está funcionando. Vou remover isso. Salvar. E agora, em vez de a gente pegar a companhia aqui no nosso esquema, vamos lá voltar para o esquema. Em vez de a gente pegar a companhia aqui, só de um objeto aqui, a gente vai chamar o R&M para pegar do banco de dados simulado. Então, vamos fazer isso na próxima aula. Até lá.
Nenhum comentário ainda (loading...)
Nenhum comentário ainda (loading...)
Gostou da aula? 😆👍
Apoie nosso trabalho com uma doação: