Transcript for:
Curso de Node.js e Backend

E aí meu amigo e aí minha amiga tudo bem com muita alegria que eu venho aqui trazer o primeiro vídeo desse evento onde vai transformar você vai trazer aí a fórmula do sucesso para você se tornar um programador bom na primeira aula de hoje então vai ser uma aula longa né assim como a de terça-feira e é de quarta-feira nós vamos Nesta aula aqui juntos montar um beck end utilizando o node tá nós vamos criar aqui uma IPI nós vamos utilizar o note e algumas outras tecnologias que eu vou mostrar para vocês ok primeiro de tudo eu queria pedir para você o seguinte aqui embaixo vai ter uma sessão de comentários e eu gostaria muito que você deixasse aqui o que você vai achar né acha da aula aqui durante o decorrer da aula que você deixe seu comentário aqui porque vai ser muito importante eu ter o seu feedback Ok e se você conhece mais alguém que tá querendo aprender sobre JavaScript se tornar em fullstack Manda aí compartilha com ele esse evento que ainda dá tempo de se inscrever Ok então vamos lá para isso nós vamos utilizar algumas tecnologias eu já vou mostrar aqui para você e no decorrer da aula nós vamos utilizando elas eu vou falando um pouco melhor sobre cada uma Ok então vamos para a tela do meu computador bom estamos aqui primeiramente claro que nós vamos precisar dele o mais precioso de todos que é o note Ok se você não sabe o que é nude basicamente o note é um tradutor Então você vai escrever JavaScript tá vai utilizar a linguagem Java script e o node você vai usar ele para que ele converta traduz isso numa linguagem em que o computador entenda ok que é uma linguagem zero e um é famoso zero e um você estudar um pouquinho aí você sabe sobre isso ok aqui não vão instalar o note porque é muito fácil eu tô no Mac então eu acredito que a maioria de vocês vão estar no Windows então basta você acessar aqui a s.org e eu recomendo que você baixa a versão LTS não baixe a versão aqui que não é estável ainda Ok só você clicar aqui fazer o download avança avança e tá tudo certo ok outro cara que nós vamos usar que é simplesmente incrível Na minha opinião e vocês vão entender o porquê do decorrer desta aula aqui é o prisma o prisma a gente pode usar ele tanto com Java script como Type script Aliás ele já vem né pronto e é recomendado que utilize Type script com ele mas aqui nessa aula nós não vamos utilizar porque o nosso foco é aprender aqui a criar uma empai com node então eu não vou focar no Type script Ok vamos também utilizar o docker eu não vou me aprofundar eu não vou trazer conteúdos aprofundados sobre o docker tá Mas nós vamos utilizar ele para criar um banco de dados aqui na nossa máquina executar e que a gente possa rodar este banco Ok então ao invés de eu fazer o que todo mundo faz e lá criar uma conta lá no Atlas criar um mongo lá um banco não a gente vai criar aqui um container rodando a imagem do postres ok nós vamos utilizar este banco aqui nessa aula a gente vai estar configurando ele aqui tá bom então novamente eu não vou ensinar aqui como instalar o docker porque você pode estar no Windows pode estar no Linux pode estar no Mac Enfim então não tem como eu trazer instalação de tudo mas é bem fácil instalar você precisa ter o docker instalado aí no seu computador Ok Além disso é importante deixou abrir mais uma aba aqui a gente vai precisar do docker com pose Ok então você pode acessar documentação aqui ó eu já fui no Google para cair mais rápido e aqui tem também ó install compose tem tudo certinho aqui para Linux Mac e Windows então a gente precisa do docker e do docker composto para a gente rodar ali o nosso arquivo docker Tá certo ok nós vamos também nessa nossa pi nós vamos utilizar o sur Crazy porque o sur Crazy ele é um transpirador ok então ele vai simplesmente pegar o nosso código ok que nós vamos escrever ele aqui do S6 para frente né o eco me script E aí nós vamos converter ele para uma linguagem mais antiga e aí ele vai até maximizar né aí a nossa performance Ok então eu vou falar mais dele aí no decorrer do vídeo e também para validar nós vamos utilizar o yup Deixa eu ver se eu caí na página certa aqui acho que cair mas temos aqui o github né onde mostra é certinho aqui as informações do yup ok então yup vai ser para a gente validar aí as nossas requisições estão vindo todos os campos certinho show de bola perfeito vamos parar de enrolação e vamos criar aqui a nossa pele Lembrando que todos esses caras eu já estou abrindo aqui para você porque eles têm documentação então melhor lugar por exemplo aqui ó do node Para você aprender você vem aqui ó Docs e aqui você escolhe a versão por exemplo eu vou pegar a versão 14 tá um pequeno exemplo E aí ó tem Exatamente tudo aqui para você então escolhe aqui alguma coisa tá por exemplo cluster se você quer aprender e aí tem várias coisas aqui ó você clica ele dá exemplos e Fala então o melhor lugar para você aprender é a documentação tá certo Então olha a documentação leia a documentação Ok é o melhor lugar para você aprender exatamente como tem que ser feito show de bola Então vamos lá vamos abrir aqui o meu vs code Eu Já criei uma pastinha aqui chamado evento né E aí eu criei uma pasta dentro backing então o que você tem que fazer somente criar uma pasta no seu computador em qualquer lugar lá nos documentos na área de trabalho onde você quiser e abrir essa pasta aqui no vs code então aqui eu estou utilizando o scode tá você pode fazer aqui também a instalação do vscold caso você não tenha então acessa aí code ponto visual studio.com e faz o download aqui perfeito Então vamos lá eu vou abrir o terminal aqui do meu vscold o próprio terminal embutido é interessante se você tiver usando O Windows talvez não funciona os teus comandos aqui faz muito tempo aí que eu não uso Windows Mas você vai precisar emular um terminal aí se você tiver no Linux no Mac pode fazer igual estou fazendo aqui Primeira coisa eu vou dar um node tracinho V para verificar se a minha versão do node se meu note está instalado então aqui eu tenho a versão 14.20.0 se você tá com uma versão diferente não tem problema você vai não vai mudar nada pode fazer exatamente como estou fazendo aqui perfeito também junto vem o npm que é um gerenciador de pacote do note é note Pack Ranger tracinho V eu consigo ter a versão então junto da versão do note 14.20 vem a versão 6.14.17 do npm porém eu não gosto de usar o npm eu já tive vários problemas só por causa do npm então eu utilizo o yarn então eu dou um yarn tracinho ver aqui eu tenho a versão 1.22.19 Rafael como é que eu faço para instalar o yarn é bem curioso o jeito que eu vou instalar aqui mas é a única o único momento em que eu realmente de fato utiliza o npm então você pode dar um npm install ou simplesmente npmi passa a tag para instalar global e você conseguir usar esse comando em qualquer lugar do seu computador e aí você instala o yarn ok E aí você vai ter o olhar instalado você pode digitar aqui ó tracinho V vai estar ele instalado o Ian e o npm fazem exatamente a mesma coisa só que para evitar alguns problemas que eu já tive por causa do npm eu gosto de utilizar o yarn Ok beleza então vamos lá vamos iniciar o nosso projeto eu vou dar um yarnite tracinho Y para ele não ficar me perguntando nome do projeto e tudo mais então eu vou dar um enter e ele vai criar para gente aqui um arquivo pack de ponto de edição aqui dentro fica exatamente todos os pacotes todas as bibliotecas que a gente for instalar o Express nós vamos usar então ele vai ficar registrado aqui dentro ok nós vamos fazer tudo isso aí perfeito perfeito primeira coisa que eu vou fazer nós vamos começar pelo docker para a gente criar o nosso banco de dados Então como a gente está usando o docker compose eu posso criar um arquivo aqui chamado docker traço com pose ponto wml ok eu tô utilizando uma extensão de ícones aqui do vscold ele já até Mostra para mim aqui o dockerzinho Né o ícone aqui tá aqui pediu se eu quero instalar a extensão do docker eu não quero instalar aqui no vs code e aqui dentro nós vamos estar utilizando então é vamos estar criando uma imagem do postres tá com um docker então o seguinte eu vou passar o parâmetro aqui version tá vou usar a versão 3 e aí se você não sabe docker não tem problema só instala ele faz como eu tô fazendo aqui executa o comando e vai dar tudo certo se você fizer como estou fazendo aqui e tiver aí o docker instalado corretamente tá certo mas eu não vou me aprofundar aqui né Senão nós vamos ficar três horas aqui só falando de docker Então para que você aprenda algo a mais já te atiça aí para que você estude docker eu estou criando uma imagem aqui tá E aí o próximo eu vou colocar aqui Services eu vou criar um serviço tá E aí eu vou dar um nome para esse serviço que eu quero então por exemplo eu vou colocar aqui DB postres evento tá E aí eu coloco dois pontos é interessante prestar atenção que eu estou inventando então eu comecei com Services e dentro de service eu coloquei aqui dois pontos e eu dei um tapzinho para o lado é importante se você fizer assim ó vai dar erro tá porque o docker ele entende essa indenização que a gente precisa seguir aqui ok E aí aqui dentro eu vou dizer qual é a imagem que eu quero utilizar Tá certo eu vou colocar aqui ó que eu quero utilizar o postres ok E aí eu vou colocar a versão ao Pine aqui perfeito perfeito agora eu vou passar aqui ó as portas que eu quero utilizar então eu vou colocar um tracinho cada porta que você quer liberar você coloca um traço aqui o que que é isso aqui o postres ele por padrão roda na porta 5432 então ele vai rodar na porta 54 32 do nosso docker se a gente não liberar essa porta se comunicar com a porta do nosso computador nós não vamos conseguir ter acesso a esse banco de dados então a gente precisa dizer qual porta do docker nós vamos usar e Vamos conectar com a porta do nosso computador Ok e aqui então você pode se você nunca usou o docker você pode colocar 54 32 dois pontos 54 32 o que que eu estou dizendo aqui a primeira porta vai ser a porta do meu computador que eu vou estar ligando com a porta do container da minha imagem Então a primeira porta do computador e a segunda da imagem do Meu Container Ok mas eu já tenho outras imagens utilizando o docker que eu já utilizo a porta 54 32 e se eu tentar criar aqui vai dar um erro porque eu já estou usando essa porta então se você colocar aqui no primeiro parâmetro alguma porta que já está sendo usada o docker Vai avisar você que já tá sendo usado ele não vai deixar criar imagem então eu vou colocar aqui ó 54 35 por exemplo você pode colocar o número que você quiser pode colocar igual eu estou colocando aqui sem problema nenhum E aí eu vou dar um nome para esse container então container name Geralmente eu coloco o mesmo do serviço então eu vou colocar aqui ó DB postres tracinho evento é importante também você não repetir o nome de uma imagem se você já usa esse nome em alguma outra imagem do docker ele também vai avisar que já existe um docker com este já existe uma imagem com este nome aí eu vou passar aqui o parâmetro Restart que é o seguinte se eu não passar esse parâmetro aqui quando eu reiniciar o meu computador o docker essa imagem aqui mais específica ela não vai iniciar junto com meu computador e aí se eu desligar o meu computador no outro dia voltar a trabalhar e tentar conectar com o banco de dados não vai dar certo porque minha imagem está parada Então dessa maneira aqui eu estou pedindo para toda vez que eu desligar reiniciar o meu computador a imagem inicie junto aqui tá certo e agora eu vou criar aqui um volume tá certo o que que é este volume olha só aqui eu vou basicamente Vamos separar aqui um pouquinho as coisas nós temos a imagem o disco rígido da nossa imagem do nosso container e nós temos o disco rígido do nosso computador são a mesma coisa sim mas para você entender Vamos separar aqui o que que eu vou fazer eu vou criar uma pasta aqui no meu computador no meu sistema operacional linkado com uma pasta do disco rígido digamos assim da imagem então tudo que eu salvar na imagem do Meu Container eu vou salvar na pasta que eu vou criar aqui dessa maneira como a gente está lidando com bancos de dados eu preciso sempre ter essas informações salvas aqui e se eu não fizer isso não criar nenhum volume a hora que eu reiniciar por exemplo o meu computador ou desligar ele ligar no outro dia eu vou perder todos os dados que eu armazenei na minha imagem e não é o que eu quero então eu vou fazer o seguinte eu vou criar essa pasta aqui no meu projeto mesmo muitos criam na pasta temporária não eu vou criar aqui mesmo no projeto para eu ter digamos assim que o backup do banco de dados aqui dentro e aí eu coloco banco de dados Eventos você pode colocar o nome que você quiser basicamente vai criar uma pasta aqui chamado banco de dados onde vão ficar armazenados o backup aí do nosso banco de dados aí eu coloco dois pontos barra e eu digo qual que é a pasta da minha imagem do meu docker que eu quero linkar que eu quero fazer este backup por padrão na imagem do post tudo que a gente salva ele fica dentro de var na pasta Lib na pasta postres SQL dentro de daira dentro de data aqui ó eu não posso mudar tem que ser esse caminho então toda vez que eu salvar uma informação no meu banco vai ser salvo aqui dentro dessa pasta no Meu Container E aí eu vou pegar eu vou fazer uma cópia para o banco de dados evento que é o que eu estou criando Tá certo agora por último eu vou colocar aqui ó as informações do meu usuário então eu vou colocar para eu poder conectar né então vou passar aqui ó post Grace e user vou criar um usuário aqui eu vou colocar PG e user mesmo pode colocar qualquer coisa como tá só na minha máquina aqui ninguém vai acessar isso de fora não tem problema aqui vou passar também o post password Ok eu vou colocar PG password um detalhe tem que ser letra maiúscula Ok como que eu sei de tudo isso olha só que legal se você digitar aqui ó docker Hub você vai cair aqui na documentação do docker e aqui tem todas as imagens inclusive do posto e se eu digitar aqui em cima eu vou ter imagem oficial e entrando aqui dentro ele mostra as versões ele tá até exemplos então ele tem aqui ó password né então ele mostra aqui ó ele dá um exemplo aqui por exemplo de como criar uma imagem Tá certo então não tô tirando da minha cabeça isso como eu sempre falo a documentação é o melhor lugar para você aprender perfeito e agora por último eu vou voltar aqui no início só vamos criar aqui o volume tá E para criar o volume basicamente eu pego exatamente o nome que eu coloquei aqui em cima e coloco ele aqui e dou uns dois pontos Ok então aqui em cima eu simplesmente vinculou né a pasta da imagem com a pasta do meu computador e aqui de fato eu creio este volume perfeito Vou salvar isso aqui apertando control s ou Command s no meu caso aqui no Mac e agora eu vou fazer o seguinte ó se você tiver utilizando aí o Windows e também tiver utilizando o Linux você vai fazer o seguinte você vai digitar tudo docker com pose up Ok para que que vai acontecer aqui o docker com pose vai conseguir ler esse meu arquivo que por padrão tem que ser esse nome aqui ó docker tracinho com pouso e traço wml tem que ser esse nome aqui não pode ser outro nome senão você vai ter que passar aqui o nome do arquivo Tá certo então quando a gente faz isso ele pega o arquivo ler e cria a imagem que a gente quer no meu caso eu tô no Mac eu uso assim ó sem o traço então surdo docker pose up Ok se tudo correr bem e a gente deu um enter ele tá pedindo a minha senha root aqui se tudo correr bem ele vai dá certo ok deu um erro aqui bom eu troquei o nome da pi aqui mas veja bem aqui ó Eu não coloco o traço Tá acabei errando aqui então eu tiro o traço seu executar novamente agora sim ele deu certo só que olha só a nossa imagem ela tá executando aqui ó tá rodando Ok tá tudo certo a gente já consegue conexão com o banco de dados né o server start tá rodando porém eu não quero que ele fique rodando eu quero que fique em segundo plano porque eu não quero usar eu não quero que o meu terminal fique aqui então eu aperto control c e eu vou Executar tudo docker com pose up menos D OK agora Ele criou né e agora a imagem está executando só que tá em segundo plano se eu digitar aqui ó sudo docker PS vai listar as imagens que eu tenho e eu tenho aqui ó no names eu tenho DB post Luiz evento que é exatamente o nome do meu serviço que eu dei aqui em cima e ele tá executando na porta 54 35 ok então nós estamos aqui com o nosso banco de dados sendo executado Nós já vamos conectar já vamos continuar com ele aqui perfeito show de bola agora sim vamos de fato iniciar a nossa api então eu vou já começar com o prisma então eu vou adicionar aqui ó o prisma Ok para a gente conectar com o banco de dados e realizar as operações e vou também instalar o prisma barra Clint para gente conseguir fazer as operações com JavaScript vou instalar perceba que além dele ter criado a pasta aqui que a gente pediu do nosso docker Ele criou uma pasta chamada node modas e aqui dentro instalou as nossas bibliotecas aí que a gente pediu E se eu vim aqui no arquivo pack já agora Ele criou aqui ó um objeto chamado dependências e aqui dentro tá o prisma E o arroba Prisma Clint ok que ele fica registrado como uma dependência que o projeto precisa eu posso inclusive vir aqui ó deletar a pasta de módulos que a gente geralmente não compartilha isso não só para o github seu simplesmente depois de ter apagado digitar em Arne ele vai criar de novo a passar de módulos e vai instalar o prisma Clint e o prisma porque ele vai o meu arquivo pack já vai entender as dependências que a gente tem aqui perfeito perfeito agora que eu tenho Prisma instalado eu vou executar aqui ó yarn Prisma e nith Ok o prisma ele vai criar uma pastinha chamado Prisma e junto vai criar um arquivo ponto AMV aqui neste arquivo ponto Henry que nós vamos configurar a conexão com o banco de dados Tá certo então primeira coisa ele tá aqui ó ele tem esse dar a base URL aqui que a gente passa o tipo do banco é potion SQL mesmo por padrão Prisma atrás você pode mudar inclusive mostrando aqui para vocês o prisma ele conecta com diversos bancos tá o post Horizon e assim por diante até um mongo quem é um banco não relacional ele consegue conectar e a gente faz na mesma maneira o segundo parâmetro é usuário então lá eu coloquei PG e user aqui ó no meu arquivo da minha imagem e o segundo parâmetro é a senha então eu coloco PG password que é assim que eu coloquei aqui no meu arquivo e eu já vou olhar aqui a porta 54 35 que ele pede aqui ó então eu vou colocar a porta 54 35 e eu não vou mudar o local roxo porque realmente o banco está aqui na minha máquina aqui esse mindb é o nome do seu banco de dados por padrão eu deixo mais DB Mas você pode colocar o que você quiser que evento enfim ele vai criar essa tabela no banco de dados perfeito Então vou salvar esse arquivo tá configurado agora e nós vamos fazer o seguinte vamos criar a primeira tabela no banco então aqui na pasta Prisma eu tenho arquivo esquema ponto Prisma tá E aqui dentro a gente vai criar as nossas tabelas no banco de dados e como que a gente faz isso a gente cria um Model tá por padrão tem que usar este nome e aí a gente passa o nome da tabela por padrão o prisma ele funciona com a primeira letra maiúscula ele não vai criar a tabela com o maiúsculo Tá mas a gente faz desta maneira aqui ó Ok E aí simplesmente isso agora aqui dentro desse objeto a gente passa quais colunas que a gente quer nessa tabela Então como toda a tabela eu vou ter um ID então eu coloco o nome depois eu coloco tipo que essa coluna vai ser do tipo inteiro perfeito e aí a gente passa também o @idi isso aqui é do próprio Prisma para identificar que a gente está criando uma coluna do tipo de @defou que também é um parâmetro do Prisma ele reconhece Então por padrão a gente passa o alto incremente porque eu não quero ficar passando o ID ele tem que ser alto incrementado então é num Passo aí quando eu inserir um dado na minha tabela ele automaticamente vai colocar o id sem eu passar de nenhum Ok E aí a gente vai passar o name então o name é do tipo string tá eu não preciso passar mais nada eu preciso também passar o e-mail então tipo string e o e-mail como a gente tá lidando com usuário é interessante a gente não repetir então a gente passa aqui ó esse parâmetro e Unique tá para ele ser único só ter um registro e não ter dois iguais por exemplo então se eu coloco lá o meu e-mail [email protected] Esse e-mail não pode ser mais usado não tem como registrar o mesmo e-mail a não ser que eu delete o e-mail que eu tenho perfeito depois a gente precisa do nosso password então tô passando também como uma string Ok E aí a gente pode passar aqui por exemplo algum outro parâmetro Como por exemplo o fone telefone né Só que eu não quero que o fone ali o telefone seja obrigatório eu quero que o e-mail seja obrigatório o e-mail e o pastor que sejam obrigatórios mas telefone não então eu simplesmente coloco aqui ó depois do tipo que essa coluna eu coloco aqui um ponto de interrogação Ok E aí por padrão se você quiser você pode parar por aqui mas vamos ver um pouco além dá para a gente passar o tá para a gente ter a data que esse usuário foi criado então a gente cria aqui ele é do parâmetro data time Ok E aí ó o defaul a gente passa o Now que ele vai pegar a data do exato momento em que for armazenado esse registro no banco e também se você quiser você pode ter update que também é do tipo data time né para identificar que é do tipo data e aí aqui a gente passa o arroba update at que aí o prisma vai reconhecer Toda vez que você editar uma informação ele vai trocar a data aqui no update Ok vou salvar este arquivo aqui ó É bem interessante o seguinte o meu vs code ele já identifica aparece as cores bonitinhas aqui se o teu aí não aparece você vem aqui em extensão e tem uma extensão do Prisma tá que essa aqui que eu já tenho instalado então vai aparecer esse verdinho aqui você instala E aí ele te ajuda aqui no alto incremento e tudo mais do Prisma Ok show de bola agora é o seguinte como meu arquivo salva a gente precisa executar Isso aqui precisa de fato criar no banco então a gente vai fazer o seguinte como a gente está em desenvolvimento a gente vai fazer yarn Prisma myreation deve trás tem limite o que que ele vai fazer bom primeiro como é a primeira migration que a gente está rodando ele vai conectar no banco de dados vai criar a nossa o nosso banco né a nossa tabela ali que é o +db E aí ele vai criar uma pastinha myreation tá dentro aqui ó Cada vez que a gente mexe aqui dentro executa Esse comando ele gera uma mygration e se eu entrar aqui ó ele simplesmente pegou o que eu fiz em JavaScript e transformou numa linguagem SQL que a linguagem que o banco de dados de fato entende ok então ele transformou então ele pegou isso aqui que eu fiz e converteu para isso aqui que é uma linguagem SQL perfeito então agora nós temos o banco de dados a tabela e user criado show não vamos mexer mais no Prisma a nossa tabela tá criada a gente já vai ver que ela realmente está criada OK agora eu vou fazer o seguinte eu vou criar uma nova pasta aqui chamada src de cerce e aqui dentro eu vou começar de fato a criar a minha epi primeira coisa que eu vou criar dentro da pasta src é o arquivo index.js para quem não sabe quando a gente usa o index né a palavra index no arquivo significa que o arquivo principal então aqui vai ser o nosso arquivo principal E aí nós precisamos instalar algumas bibliotecas aqui então vamos lá vou fazer um em Arne add a primeira que eu vou instalar é o Express a segunda corce e a outra é o dot envie tá nós vamos precisar ela para ler o nosso arquivo em Ok já vou explicar cada uma delas beleza biblioteca instalada agora é o seguinte geralmente quando a gente vai criar uma pi qual Note que que a gente faz utiliza aqui o const E aí coloca Experience importa com o Express assim certo nós não vamos fazer dessa maneira a gente vai fazer com o importe Export Então a gente vai fazer aqui ó importe Express from Express OK depois a gente vai converter vai utilizar o sur Crazy aqui tá bom mas não se preocupa eu também vou importar o Corsa então importec Crocs OK e eu preciso importar o dot envie então eu vou importar o dotein aqui ok esses nomes aqui ó Express scores do time você pode colocar o que você quiser por padrão Eu sempre faço importe Express né um nome Express então eu utilizo aqui ó o nome o mesmo da biblioteca Ok perfeito agora é o seguinte eu vou já configurar o dothing simplesmente passa isso aqui depois eu vou mostrar mais detalhado para que que serve isso aqui aí eu vou criar uma variável chamada app e vou iniciar eu vou instanciar o Xpress aqui dentro para eu utilizar variável app eu tenho que fazer isso aqui para iniciar o Express aí depois eu vou usar aqui então eu vou injetar dentro do app o meu Corsa o Corsa basicamente nesse caso aqui a gente está liberando qualquer acesso Então quando você tem uma epi e o teu front-end por exemplo vai fazer uma requisição é se você não liberar o domínio ou IP ele vai dar um erro de corce é uma questão de segurança Então nesse caso aqui eu tô deixando sem nada porque eu quero que qualquer lugar chame tá a gente vai proteger a nossa a Paid outra maneira Ok e depois eu vou fazer o app ponto e use Express ponto Jason ou Jason como Alguns chamam isso aqui é para o Express entender o formato de som então quando a gente vai criar um usuário por exemplo a gente vai passar lá um Jason com os dados que a gente quer salvar então eu tô fazendo isso aqui para ele entender o formato Jason perfeito show de bola agora eu vou fazer o seguinte eu vou usar o requaire aqui mesmo para ficar um pouco mais fácil tá da gente fazer aqui o seguinte ó eu vou importar aqui dentro do src vai ter aqui uma pasta chamada rounds Ok dentro dela eu vou pegar o arquivo index show E aí eu passo como um parâmetro web ainda não tenho esse arquivo de rotas Tá mas basicamente eu tô importando ele aqui e passando o app eu fiz essa maneira com recorde para ficar mais fácil eu poderia passar um importe aqui normalmente Tá mas faz assim para não ter dificuldade Ok E aí você vai melhorando seu código e por último eu vou fazer o app listing para ouvir né para executar eu vou usar a porta 3001 então a minha pi vai ser executada na porta 3001 só para pinte ter certeza vou colocar um consolog aqui escrito servidor iniciou perfeito show de bola agora antes da gente iniciar a gente pode fazer o seguinte eu posso aqui no meu terminal digitar node entrar na pasta src e lê o arquivo index tá só que olha só ele tá falando aqui que o Ek me script ele precisa do modo ponto Export né ele não sabe ele não entende esse importe aqui ok então ele não sabe trabalhar desta maneira Ok e como que a gente faz para resolver este problema então é o seguinte a gente vai vir aqui no pack tá e eu vou criar aqui ó depois da licença por exemplo eu vou criar o script perfeito bom E aí eu vou criar aqui um comando chamado start Geralmente a galera coloca deve aqui também não tem problema eu gosto de utilizar o padrão start E aí a gente pode fazer o seguinte eu vou utilizar o nodemon aqui que é o seguinte da maneira que tá toda vez que a gente alterar algum arquivo nós vamos ter que parar a nossa pi e iniciar novamente para que funciona o notebook ele ficou vindo os arquivos e toda vez que a gente edita um arquivo ele reinicia a nossa aplicação automaticamente Tá certo e aqui a gente vai fazer o seguinte ó eu vou ler a pasta src então eu vou entrar dentro dela e eu vou ler o arquivo indexponto JS OK vou dar um Clear e agora vou executar o comando yarn start ele deu um erro porque eu não tenho notem instalado Então vamos instalar ele ó no último porém o node moi só preciso dele para desenvolvimento eu não vou depois subir isso aqui para produção então eu faço aqui ó yarn add tracinho D para ser uma dependência de desenvolvimento somente tá vou dar um enter vou instalar Ok Ele criou um deve dependências aqui e colocou o notem agora se eu der um ar no start ele vai rodar Nossa aplicação OK tá dando um erro aqui Bom basicamente ele deu um erro aqui porque ainda o nodemon não entende o meu importe aí que eu fiz então vou fazer o seguinte aqui na pasta raiz eu vou criar um arquivo aqui chamado deixa eu abrir aqui bom eu vou criar um arquivo aqui chamado Ok inclusive ele já coloca aqui o sinalzinho do notion é aqui dentro a gente vai passar uma propriedade que é o Grace que a gente usa então eu vou colocar aqui ó o ex e c Ok map passar esta propriedade aqui e aí ó aqui é o seguinte eu vou simplesmente pegar o JS né que são os arquivos JS e vou dizer que eu quero executar aqui ó o node tracinho R Ok su Crazy E aí ó eu vou também instalar como dependência de desenvolvimento o surprise guardar fazer instalação OK agora sim se eu escrevi tudo certinho e dá um Yorn start ainda tá rolando porque ele não encontrou o src/hounds/index Mas se a gente vir aqui ó e comentar esse cara nós temos agora api rodando então servidor iniciou nós já temos aqui a nossa pay já tá sendo executada Claro que ela não vai fazer nada mais além que além disso né mas se eu acessar o meu navegador aqui e entrar em local host 3001 já tenho aqui que ele não existe uma rota a gente já conseguiu fazer um Get No nosso servidor Ok só que não tem nenhuma rota é criada e nem nada então vamos iniciar aqui dentro de src eu vou começar fazendo o seguinte eu vou criar uma pasta chamada Services é um padrão que eu uso você pode dar o nome de úteis Ou pode dar o próprio nome de prisma e aqui dentro eu vou criar o prisma ponto JS porque ó perceba que o meu notem reiniciou porque eu criei um arquivo novo aqui tá Então esse é o papel do notebook eu vou importar aqui basicamente lá de prisma Clint eu vou importar o prisma Clint porque a gente precisa dele para comunicar com o banco e fazer as operações né só que em vez de eu ficar toda vez que eu for se comunicar criar eu faço uma vez e simplesmente importo então aqui ó eu faço Export Prisma e passo aqui o new Prisma Clint desta maneira aqui perfeito então aqui tá feito o nosso Prisma agora eu vou criar uma pasta chamada repositor Ok e aqui dentro vai ser aonde eu vou de fato fazer as operações no banco de dados Então vou criar aqui ó um arquivo chamado user repositor.js perfeito e eu vou começar importando aquele arquivo Prisma que tá dentro da pasta Services e aqui dentro Eu tenho o prisma para utilizar Pronto agora simplesmente eu vou criar as minhas funções então eu vou começar criando a função para criar um usuário então exportcount Create e user precisa ser assim krona e aqui eu vou receber o parâmetro dele que nada mais é que os dados que eu quero né criar do meu usuário beleza e agora a gente vai usar uma o prisma só que como eu vou criar um usuário quero retornar os dados que foram criados então eu vou criar uma variável uma constante chamada user e vou passar aqui o seguinte ó Prisma ponto perceba que ele já mostrou para mim user ele Já identificou que existe uma tabela chamada user que é exatamente essa tabela Lembra que eu falei que ele não cria com a primeira letra maiúscula mas a gente tem que colocar aqui é um padrão do Prisma mas ele não vai criar com a letra maiúscula então eu vou usar o prisma para conectar na tabela e user E aí aqui dentro eu vou fazer o Create eu vou usar a propriedade do Prisma então basicamente eu tô usando o prisma para acessar a tabela e user para criar uma informação e aqui a gente passa a função e abre um objeto para passar o parâmetro Qual parâmetro aqui a gente tem que passar o parâmetro dele tá que são os dados então basicamente a gente teria que fazer isso aqui abrir um objeto e aí passar nem vem data ponto nem por exemplo né e-mail data ponto e meio mas a gente não precisa fazer isso como eu recebo um dele aqui e o parâmetro é dele também eu simplesmente faço isso aqui tá eu dou um return e user perfeito eu tenho aqui a função Create show não vou mais mexer por enquanto nesse repositório aqui agora eu vou criar uma pasta chamado controllers e vou criar aqui dentro o user ponto controller.js e vou importar aquela função que eu acabei de criar lá nos meus repositórios que é o user repositório aqui dentro Eu tenho o Create e use E aí eu vou criar uma função chamada só Create Porque eu já tenho Create user então aqui eu uso por padrão o Create vai ser assim clona E como a gente está utilizando Express automaticamente ele joga para a gente dois parâmetros o rack de requisição e o resto de resposta então eu uso esse modelo aqui requer se você quiser colocar aqui request enfim responde fica a seu critério mas para abreviar eu coloco dessa maneira e eu vou criar aqui dentro um Troy Cat porque o Controller é o cara que onde eu vou tratar as informações e responder dá uma resposta para quem chamou minha epi então o repositório é o cara que faz as operações no banco e eu controlo é o cara que vai receber requisição tratar ela e chamar o repositório o repositório faz o que tem que fazer e retorna para o controle Ok então aqui basicamente eu vou criar um porque dentro de repositório eu retorno o user então aqui também eu preciso criar uma variável então aqui eu vou chamar o Create e user e ele espera aqui ó um parâmetro que Aldeia só que eu não vou passar a data aqui né não tá vindo de lugar nenhum então vou pegar o que vem na minha requisição e dentro vai ter o body que é o corpo que é onde eu vou passar os dados que eu quero criar o usuário se tudo correr bem eu vou usar o resto de resposta que o próprio Express me dá retornar um status 200 o status dos entes sempre tem que ter um status é a forma que o front ou quem tá chamando identifica se deu certo a requisição ou não o status aqui 200 significa sucesso e vou enviar vou fazer um Sandy enviar o user que eu acabei de criar se der errado eu vou aqui no bloco Cat chamar o status aí eu vou passar o status 400 que é um estado de erro e vou enviar o que tá dentro do e aqui que o cat captou o erro e jogou dentro da variável e beleza salvei isso aqui vou fechar tudo agora só falta a gente criar nossa rota então aqui dentro eu vou criar a pasta hounds e aí eu vou criar o arquivo index.js e também vou criar aqui ó user ponto JS o index eu vou colocar todas as rotas dentro do Index que é ela que é utilizada aqui ó que eu tô importando aqui tá Então vamos lá Calma que você já vai entender eu vou importar o meu controle Então vou entrar lá ponto ponto barra Controller barra e user Controller aqui dentro Eu tenho o Create e aqui eu simplesmente cria minha função então conste e userhounds ele vai receber o parâmetro app que lembra que é o nosso Express por isso que a gente passa esse App aqui que é para passar esse parâmetro aqui para dentro e a gente vai criar o app post então uma payrast ela existe o post o get o boot tem o pet também mas o post a gente vai fazer todos aqui nessa aula ainda tá mas o post basicamente é para a gente inserir uma informação quando a gente quer salvar não é uma obrigatoriedade você pode fazer o post para retornar alguma informação mas por padrão não é utilizado Então se utiliza o post e aqui a gente vai dar um nome para essa rota Então a gente vai chamar o endereço da epi/ e user por exemplo e quando eu chamar esse deponte eu vou chamar a função Create E aí vai desencadear todas as minhas funções aí por padrão vou fazer um xpor de fow e userhouse Ok e aqui dentro do Index eu vou importar e userhounds que é o meu arquivo Ok E aí aqui é o seguinte Por que que a gente faz dessa maneira aqui né aqui a gente eu vou separar Então vamos supor que eu tenho uma rota de usuário eu crio e user e coloca as rotas ali você tem produtos eu crio um arquivo pro lado de ponto rounds e deixa as rotas só de produto ali dentro então é uma forma de organizar tá essa história que cria aqui o arquivo index.js e fica colocando todas as rotas e tudo aqui não existe tá isso aqui você não vai ver empresa nenhuma usar esse padrão você para tudo porque depois você só pay for crescendo vai ser impossível dar manutenção Então já vai aprendendo dessa maneira aqui a separar Tudo ok e aqui dentro a gente vai fazer por exemplo recebe o app Ok E aí a gente vai colocar userhouse aqui dentro passando o parâmetro ep lá para ele a gente faz aqui um EcoSport House Vou salvar vou voltar aqui deixa eu fechar tudo vou voltar no meu arquivo index vou descontar e vou salvar esse cara aqui agora ele basicamente tá dando um erro aqui né por causa do nosso requaire Então vamos resolver isso aqui e aqui basicamente nós vamos mudar isso aqui tá eu vou tirar esse cara daqui e eu vou importar aqui em cima então importe hounds lá do meu Opa aqui da minha pasta House E aí eu vou usar ela aqui dentro como que eu uso ela aqui dentro muito simples eu venho aqui no final chamo o House e passo o app para dentro beleza rodando funcionando então tá aqui servidor iniciou a gente Corrigiu o erro agora é o seguinte para a gente simular a requisição eu vou usar um cara chamado insônia Ok você pode acessar insônia faz o download um programinha avança avança aí e vai instalar ele é o cara que nós vamos simular essas requisições então eu já tô com ele aberto aqui deixa eu puxar para cá basicamente eu já tenho algumas collections criadas aqui mas o teu vai abrir basicamente assim vazio você vem aqui em cima clique em Sônia aqui do lado direito vem e request Collection e dá um nome aqui é o nome que você quiser eu vou colocar por exemplo evento start deve Ok só para eu saber que a documentação também é uma forma de documentar da minha epi tá aqui dentro Ok bom eu vou criar aqui ó uma pasta e user para colocar as requisições referentes ao usuário aqui dentro vou criar aqui uma nova requisição então eu clico com o botão direito New http request eu vou mudar aqui para o tipo post OK aí eu coloco aqui ó o endereço da minha epi que é http:// local host 2 pontos 3.000 né que é o número que a gente colocou aqui ó 3001 então a gente precisa colocar aqui também agora barra e user que é o é o que a gente colocou aqui ó na rota barra e user ok Se eu fizer isso aqui eu preciso mandar um Jason agora lembra porque que a gente colocou aqui ó no Index Esse Express ponte som para ele entender o que eu vou mandar aqui então basicamente eu tenho que mandar um name Ok colocar aqui ó Rafael menu ele espera também um password que é a um dois três quatro cinco seis por exemplo e ele espera também um e-mail não precisa mandar na ordem que eu criei lá tá colocar um e-mail qualquer aqui Beleza se a gente olhar aqui ó no Prisma ponto em cima ele espera o name e meio password o telefone não é obrigatório então eu posso vir aqui e passar o fone como nulo né não precisa passar os parâmetros Crate e update não precisa passar são preenchidos automaticamente se tudo correr bem eu vou fazer um Sandy aqui e vai me retornar os dados do usuário que eu acabei de criar então ele retorna o ID ó que por padrão é o primeiro então ele ficou aí de um o nome o e-mail o password o fone e tudo mais perfeito perfeito Então eu tenho aqui os dados do usuário que eu acabei de criar antes da gente fazer um get e tudo mais ver os usuários criados veja bem eu tô passando a senha um dois três quatro cinco seis OK e eu tô salvando a senha um dois três quatro cinco seis mas isso aqui não é interessante a gente fazer é interessante a gente criptografar esta senha aqui né então é interessante que a gente faça isso e não salve um dois três cinco seis vamos imaginar aqui por algum motivo um descuido ou qualquer outra coisa alguém tem acesso ao nosso banco de dados vai descobrir a senhas dos meus usuários então isso não é interessante tá então vamos criptografar esta senha para isso eu vou parar minha pi aqui eu posso abrir um outro terminal eu vou parar para eu limpar isso aqui e eu vou instalar mais uma biblioteca chamada BCR essa biblioteca nós vamos usar para criptografar a senha e olha só nós vamos vir aqui no controle no user ponto Controller e eu vou deixar aqui ó por cima tá aqui que é um é uma organização que eu tenho você vai importar o becript então importe BCR e aqui ó antes de chamar o nosso repositório passando reck.org nós vamos criptografar esta senha Então vou criar uma constante chamada hash password você pode colocar também qualquer nome vou passar o Awake porque eu quero esperar isso aqui executar para eu seguir na linha de baixo Vou chamar o b a Esqueci o c aqui ó o BCR e o becript tem a função chamada hash a gente vai criar um hash e aqui dentro eu tenho que passar dois parâmetros o deira tá e o Salt orns Ok então eu vou passar aqui qual é a informação que eu quero criar o resto Então vai chegar dentro de rack ponto Bari ponto password se a gente olhar no insônia ó esse cara aqui é o rack ponto Body E aí eu vou acessar só o campo best ok e por parâmetro a gente passa o Salt Ok vou passar 10 aqui OK agora é o seguinte a gente precisa substituir o pasword que tá vindo na requisição pela senha criptografada então a gente simplesmente faz rack ponto Body é igual a hash password Ok olha só que legal agora eu vou salvar isso aqui a deixa eu iniciar minha pay de novo né em start aqui servidor iniciou e agora eu vou preciso passar um outro usuário Então vamos criar um outro usuário aqui vamos criar a Maria por exemplo sem é um dois três quatro cinco seis e o e-mail vai ser Maria agora a hora que eu salvar Olha só como salvou a minha senha a minha senha continua sendo um dois três quatro cinco seis só que ela está criptografada ok simplesmente a gente usa o becript faz o resto e substituir substituir pelo valor que veio Ok simples assim mas olha só ainda nós temos um problema Por mais que essa senha tá criptografada eu não quero retornar a senha não preciso retornar a senha só preciso retornar o Edi nome e-mail o telefone a data de criação ou se eu não quiser retornar também mais o password não é uma boa a gente ficar retornando aqui na resposta né então vamos corrigir isso a gente vai usar o prisma mesmo para dizer o que que eu quero que retorne o que que eu não quero eu vou dentro de repositório e user ponto reposta e aqui ó depois do data eu vou passar o parâmetro select e eu vou dizer você selecionar quais valores eu quero que retorne Então vou começar pelo id aí a gente passa um boleando então eu abro o select como objeto e aí eu passo aí de é igual a true o name eu quero que retorne então eu passo true também o e-mail Eu também quero que retorne então eu passo true o password eu coloco falce porque eu não quero que retorne o fone eu quero que retorne o created eu quero que retorne e o update eu quero que retorne Ah eu não quero por exemplo que retorne o fone então é só você vir aqui e colocar como falsi Ok Salvei Minha pi reiniciou Vamos criar um outro usuário aqui vou criar o João agora sem um dois três quatro cinco também e o e-mail joã[email protected] perfeito agora faça a requisição e Olá o nosso pastor que sumiu mas não é que ele não foi armazenado Eu só não estou retornando ele na requisição aqui tá certo então é bem diferente aí perfeito show de bola mas a gente tem um outro problema aqui e a gente vai usar a última Lib aí dessa aula pensa se eu não mandar o e-mail vamos tirar o e-mail aqui e vamos tentar fazer uma requisição vai dar um erro 400 e retornou um Clint version 4.5.0 beleza vamos olhar o que é isso mas imagine que você tá trabalhando numa empresa que você está desenvolvendo api e uma outra equipe vai desenvolver o frontinge ao qual vai fazer a requisição na tua api ele olhando esse ele vai conseguir identificar que o campo IMEI tá faltando não porque aqui não tá dizendo não tá falando né então é interessante a gente retornar dá uma mensagem para o usuário o qual é o erro de fato aqui é um erro de um campo que está faltando e é obrigatório agora entra o nosso iupi então para não parar o meu terminal eu vou abrir um outro terminal aqui e eu vou adicionar o yup para a gente fazer as validações do que é obrigatório o que que não é a gente fazer validação do que está sendo enviado perfeito deixou Minimizar um pouco essas pastas dentro da pasta src eu vou criar uma outra pasta chamada Vallejo e as minhas validações vão ficar aqui então vou criar um novo arquivo chamado user ponto validation ponto JS perceba que eu tô separando que é validação que é repositório que vai de fato conectar com banco o que que é um controle que vai tratar minha requisição as rotas eu faço tudo separado tá mantém o padrão depois fica muito mais fácil você dar manutenção a isso aqui isso daqui um ano você precisa voltar e mexer é muito mais fácil ou se outra pessoa for continuar top aí vamos pensar que você tá trabalhando em equipe também fica mais fácil de entender do que tudo no arquivo só ok então vamos lá para importar o yup eu preciso importar dessa maneira aqui vamos pegar aqui o yup E aí eu vou criar uma função então Xport const user validation vai ser o nome da minha função e aqui eu passo e o ponto Object porque porque aqui eu tô mandando um objeto Então eu preciso validar este objeto e aí eu coloco os campos exatamente da minha tabela então o nome é obrigatório então eu coloco nome dois pontos yup ponto string porque é do tipo string eu não posso mandar um número no nome ponto recuar Ok porque é obrigatório beleza coloca uma vírgula e eu coloco o próximo que é o e-mail então yup.estring o e-mail também é do tipo string eu não posso mandar um número ponto requality também significa que é obrigatório E no caso do e-mail eu passo aqui ó ponto e meio que o yup vai validar se isso aqui de fato é um e-mail válido ok passo vírgula o password então yup string porque também é obrigatório e aqui eu posso colocar uma propriedade de mim ou seja o mínimo de caracteres que eu preciso para ter uma senha 6 geralmente é um padrão Aí que todo mundo usa é seis caracteres para uma senha para não colocar uma senha de dois dígitos por exemplo né então uma questão de segurança Ok e o fone também eu vou validar string e o fone não é obrigatório então eu posso a propriedade nooble aqui tá E aí eu coloco aqui como tru que pode ser nulo perfeito agora para finalizar nós vamos no controle Olha só porque o controle porque aqui eu tô criptografando a senha e agora eu vou validar vou chamar essa validação e depois se tudo correr bem eu chamo repositório que é o que faz como entrar com o banco de dados então por isso do repositório por isso do controle eu vou importar então essa função que tá lá dentro de validations e user invalidation então eu vou importar ela aqui perfeito e antes de tudo aqui ó vou até dar um enter maior aqui eu vou chamar ela então eu não preciso colocar dentro de uma variável nem nada eu simplesmente chamo e user ponto validation aqui dentro o iupi me dá a opção validez e eu passo o que que eu quero validar que é o rack ponto Body né que eu tô mandando aqui para dentro salvando isso aqui a nossa pay vou olhar se não deu nenhum erro voltando eu vou tentar enviar novamente sem o nosso e-mail Olha só agora retornou algo mais legível Ele tá dizendo aqui ó que eu mandei o nome ou campo name o campo pastor e o campo telefone mas o pf e meio ele é obrigatório tá falando ó o e-mail é um campo obrigatório se eu não passar vamos passar aqui o e-mail Então vamos passar aqui o e-mail Vamos só trocar o nome aqui para Rodrigo Vou colocar aqui [email protected] Beleza vou passar dessa maneira aqui e aí eu vou tirar o nome por exemplo ó não vou mandar o nome vou tentar fazer requisição agora mudou falando que o nome é obrigatório Então vamos passar o name aqui name vamos passar como Rodrigo e aí eu coloco vírgula aqui no final bom tô mandando todos os campos vou fazer a requisição e agora passou na nossa validação essa validação é uma das formas de você validar Ok ali dá um erro talvez não seja o erro mais nítido possível mas já diz alguma coisa para quem tá fazendo a requisição perfeito show de bola então a parte de criação tá tudo certo agora vamos listar os nossos usuários não vamos fazer um get para ver todos os usuários cadastrados Então vamos lá dentro do repositório aqui vou criar uma outra função chamada get All para eu pegar todos vai ser assim não vou receber parâmetro nenhum por exemplo E aí eu vou criar uma constante chamada e users e vou usar o prisma de novo então Prisma ponto e user ponto aqui eu vou simplesmente pegar todos ó passo dessa maneira sem parâmetro nenhum e eu retorno os users que foram encontrados dentro do controle agora eu vou importar essa função get Shaw e vou criar a função aqui dentro do meu controle Então vou criar o get que sempre vai receber uma requisição em uma resposta sempre padrão sempre também eu tenho o meu try Cat Ok sempre também para eu saber se deu certo né Um bloco para eu validar minha requisição e eu crio aqui os users chama a função get ao não preciso passar parâmetro nenhum se der certo eu vou retornar o status 200 igual eu fiz lá em cima e retorno os usuários encontrados se der errado eu vou passar o status 400 retornando o erro encontrado Beleza o rack eu não tô usando mais não apaga deixa ele aqui o que falta a gente criar a nossa rota aqui dentro de user ponto House eu vou importar lá dentro do controle a função get e agora eu vou fazer aqui ó app ponto get o get a gente usa para pegar informação para listar para visualizar vou passar barra e user também eu posso repetir porque aqui os tipos são diferentes tá E aí eu passo aqui o get Vou salvar minha aplicação reiniciou vou voltar aqui para o meu insônia academia insônia tá aqui agora eu vou criar aqui ó uma nova requisição que vai ser do tipo get mesmo vou criar vou colocar o endereço então http://localho 301 barra e user Ok vou fazer a requisição e Olá eu tenho todos os usuários claro que aqui a gente foi criando e validando então aqui não tá criptografado a senha enfim mas aqui no get ainda tá vindo a minha senha é só a gente fazer da mesma forma que a gente fez no Create passar o select aqui dentro então a gente passa o select abre aqui eu vou até copiar isso aqui ó porque exatamente esses dados que eu quero aqui dentro Ok salvei agora se eu faço o meu pastor que sumiu da minha requisição aqui a gente está listando todos os usuários criados então eu tenho aqui quatro usuários Ok e agora se a gente quiser buscar informação de um usuário só específico né que é por aí de Então dentro do meu repositório eu vou criar essa função aqui para ir lá no banco pegar então vou fazer o get bye vai ser a síncona e aqui eu vou receber um ID né o identificador do usuário que eu quero pegar então vou fazer aqui a constante user vou usar o prisma ponto e user porque eu quero conectar na tabela eu vou fazer o find unit aqui eu vou pegar uma informação específica e aqui como eu quero uma informação específica eu preciso passar o air ID esse were eu tô dizendo onde eu quero informação onde seja esse ID aqui aqui ó teria que fazer assim aí é igual ID mas como o nome do meu parâmetro é o mesmo nome que eu recebo aqui eu só passo dessa maneira não preciso colocar os dois pontos e aí eu dou um return e user Ok beleza vamos lá dentro do nosso controle agora eu vou fazer o seguinte Export Primeiro vamos importar o get bayerd aqui em cima porque eu preciso dessa função e eu vou criar a função get ID né o get byed tá no meu repositório o get é Gui tá dentro do meu controle eu não posso ter duas funções no mesmo lugar com o mesmo nome ok padrão vou criar o meu bloco trike aqui perfeito agora vou criar uma constante chamada e user que vai ser sincrona e vou chamar o get bayerd aqui ele espera o ID então eu vou colocar reque ponto para antes porque o Edi vai vir nos parâmetros só que esse aí de aqui vai vir como string e o número que tem aqui ó é um inteiro do id então eu simplesmente vou passar um Number para converter essa string em número Ok E aí se ele encontrar eu vou retornar o status dos 200 retornando o meu e user caso de erro eu vou retornar o 400 retornando o erro que foi encontrado Agora falta só criar aqui a nossa rota então ep.gat falta importar aqui do controlo a função get aí vou fazer um app barra e user E como eu preciso lá no meu controle pegar o ID que tá nos parâmetros a gente passa dessa maneira barra dois pontos ID então aqui está o parâmetro eu não vou passar lá na hora dois pontos aí de eu vou passar o ID de fato e aqui eu só digo para o Express né é uma mágica dele aí que ele vai entender isso aqui como um ID então por isso que a gente passa dessa maneira aqui ó parâmetros e aqui eu vou passar a função get AIDS beleza salvei reiniciei vou criar uma nova requisição vou passar aqui o http: localhost/huser E agora tem que colocar aqui ó barra ID ou 4 por exemplo vou pegar esse usuário aqui que foi o último que eu criei então eu passo e o user/4 esse barra quatro é o parâmetro que ele tá esperando usar lá fazendo a requisição vem somente os dados do usuário quatro então como eu também não quero a senha aqui depois do air eu passo o select e eu só quero essas informações aqui que eu posso copiar e colar fazendo a requisição Sumiu a minha senha também ok então para a gente finalizar o crude o que que falta o que que é o Cruze né deixa eu abrir aqui vamos vamos entender aqui o que que é crude tá que todo mundo fala aí o crude basicamente é Create então é criar um dado no caso usuário a gente já criou ele o Read né de leitura de buscar de visualizar Ok o Woody update então atualizar falta a gente atualizar esse usuário e o d de lite que é deletar então falta a gente fazer esses dois update e o delite perfeito vamos fazer eles vamos Então vamos lá no nosso repositório lá no final vou criar uma outra função chamada Xbox e aqui para atualizar o usuário precisa de dois parâmetros o ID do usuário que eu quero atualizar e o dele é que são as novas informações que eu quero atualizar faço um com shi user ao Eight Vou chamar o meu Prisma ponto user ponto update agora a gente vai atualizar tem que passar o er para dizer qual é o dado que eu quero né compara com base no id e aqui ó vírgula eu passo o data que são o dele né que são os novos dados como por padrão eu já vou colocar o select porque eu não quero que retorne a minha senha Então já vamos colocar tudo isso aqui ok E aí eu dou um turn aqui depois da Inter meu filho britânico OK Agora falta a gente criar nosso controle então eu vou receber essa função aqui ou colocar um Xbox concha e aqui eu vou chamar de update vai receber requisição e a resposta perfeito vou criar aqui o bloco try Cat OK agora eu vou criar uma constante chamada e user vou chamar lá o update e user e ele espera dois parâmetros o ID então eu sei já que eu preciso converter o ID para número então vai vindo da mesma maneira da mesma maneira é que ponto para nos pontos do Number não vai colocar vírgula aqui dentro senão vai dar errado passando o rack ponto Body Ok se der tudo certo vou retornar o status 200 enviando o user que eu acabei de criar se der errado também vou retornar o status 400 enviando o erro que foi encontrado bom agora o que falta é a nossa rota Então vamos importar esse cara aqui update e para fazer uma atualização a gente usa o tipo aí como alguns dizem tá que vai ser barra e user E como eu também preciso do Haiti eu vou colocar barra dois pontos id e vou chamar a função update salvei reiniciou Nossa api vou criar a nova requisição vou trocar por tipo Punch e vou chamar aqui http vou dar um ctrl/ aqui ele já o insônia já entende aqui né que eu tô usando esse padrão e eu vou atualizar o usuário 4 então só para a gente garantir ó o usuário 4 tá com nome Rodrigo eu vou trocar o nome do usuário então aí a gente precisa colocar o bar então no formato de som eu vou passar só o name não é obrigado você passar todos os usuários porque esses usuário já existe então você passa só a informação que você quer então vou colocar Rodrigo atualizado com sucesso por exemplo Ok vou fazer requisição se tudo der certo ele vai retornar aqui ó Rodrigo atualizado com sucesso agora se eu vem no get ó tá Rodrigo e eu faço atualização de novo ele vem atualizado com o nome que eu passei Beleza o que falta agora então é gente excluir um usuário Então vamos lá dentro do nosso repositório vou criar a função de de Elite e user vai ser assim para e eu preciso do id também do usuário que eu quero excluir aqui como eu vou excluir eu não vou retornar nenhuma informação não vou retornar nenhum dado então eu não crio variável simplesmente passo ao Eight chamo Prisma ponto user por padrão sempre eu tô mexendo com usuário então Prisma ponto e user e depois a função de Elite Ok E aí Aqui também eu preciso passar o air id e aqui eu só dou um return e não retorno nada somando retornar essa minha função Agora dentro do controle nos importar o Elite user e vamos fazer a função então eu vou chamar essa função aqui dentro de remove OK passar o rack o resto que a minha requisição e minha resposta vou criar o bloco try o bloco Cat aqui eu escrevi assim que errado beleza aqui também como eu não vou retornar nada eu só chamo o await bilhete usa e eu preciso do id então eu sei que eu tenho que converter isso aqui para um inteiro né então já chamo o Number parça ponto aí perfeito se tudo correr bem vou passar o status 200 e não vou enviar nada então simplesmente eu coloco sempre sem nenhuma informação aqui status 400 e passo o sangue o erro Ok bom Estamos aqui na última o que que falta a gente já fez esse processo várias vezes o que que falta a gente criar aqui vai lá você tem três segundos para pensar bom se você falou que falta criar a rota você acertou Então vamos lá criar rota vamos importar a função remove e aqui a gente usa o tipo de Elite né para fazer a remoção então a gente passa barra e user/ como eu preciso do edita meu eu coloco barra dois pontos id e chama a função remove salve minha aplicação reiniciou agora vou criar uma nova requisição vou alterar aqui para o tipo de Elite e vou chamar o http dois pontos barra barra localhost 3000 Barra e user/4 eu quero deletar o usuário 4 vou fazer requisição retornou o status 200 mas não retornou nada porque a gente deletou realmente não é para deletar agora se eu venho aqui no meu get Onde eu pego todos os usuários e faço a requisição sumiu um usuário né que que acontece se eu passar o aí de 4 de novo não existe mais o ed4 vou fazer edição ele vai retornar que não encontrou esse registro não existe ok isso aqui é um retorno do próprio Prisma que caiu no bloco Cat lá e retornou perfeito muito bem então nós temos aqui o nosso grude de usuários completo Ok então a gente cria um usuário a gente visualiza todos os usuários e visualizam o usuário único a gente edita um usuário e a gente deleta um usuário a gente fez aqui a nossa pi completinha um crude né não tem como a gente se aprofundar muito em uma aula de back end mas basicamente a gente finalizou então eu tentei passar para vocês bastante coisa aqui que muitos conteúdos por aí não passam se o Crazy é um exemplo e up é um exemplo Claro que eu não tô falando que ninguém ensina isso né mas a maioria das pessoas não ensinam e esse padrão que eu criei de controle repositório de rotas também ninguém faz né quando as pessoas vão ensinar cria um arquivo app e sai criando aqui né as rotas aqui não é dessa maneira tá então faz tudo organizado para né a sua Pei vai crescendo então Daqui um pouco você vai ter por exemplo produto vai ter estoque Então os teus arquivos vão crescendo Imaginem Controller com várias e várias funções né para criar o usuário para criar produto para mexer em estoque imagine tudo no arquivo só vai virar uma bagunça enorme né Então a nossa pi tá pronta tá tudo ok rodando perfeitamente tá criando tá listando tá deletando tá editando Tá tudo perfeito o nosso backing está pronto Nós ainda vamos voltar aqui a mexer no backing que é para gente preparar ele para o ambiente de produção Então nós vamos usar o sucks para fazer o Build para converter esse esse nosso java script mas não vai ser nessa aula lá no final depois do nosso frontinho de pronto eu vou construir né o back o front a gente vai colocar isso aqui em produção não vamos usar e nem nada disso a gente vai contratar um VPS eu vou mostrar manualmente como a gente faz isso aqui para vocês verem tá uma forma de você aprender algo mais né vídeos por aí ensinando sobre heroco tem de monte por aí né então vamos ensinar algo diferente aí para vocês ok então eu espero que você tenha gostado dessa aula aqui né uma aula bem longa mas eu já trouxe todo o conteúdo de back end aqui nós vamos voltar ainda mexer mais um pouquinho mas a princípio é isso aqui espero que você tenha gostado novamente se você gostou dessa aula aqui quer indicar para alguém Aproveita que ainda dá tempo de participar do evento depois as matrículas vão se encerrar Tá bom então eu vou ficando por aqui Um grande abraço e eu te vejo amanhã tchau tchau