Cadê já tá funcionando aqui já então bora lá que hoje você vai aprender a criar sua primeira api consumir um banco de dados com o nodejs usando typescript e também criar todo o front end né criar aqui o front end com o react JS com o typescript e já consumindo essa nossa api antes da gente começar Então a gente vai ter aqui uma API de clientes que a gente vai construir onde a gente vai construir toda a parte do backend comunicar com banco de dados e vai desenvolver o front end também com typescript aqui então
aqui eu posso digitar o nome por exemplo ã Caroline e aqui digitar Ana @test pcom e aí vou cadastrar ela e quando eu cadastrar ela vai ser cadastrada de fato no nosso banco de dados usando essa nossa api e aqui também eu tô listando né consumindo o nosso api posso deletar não quero mais a Ana posso apagar vai excluir do banco de dados e também já vai atualizar aqui pra gente bora lá e antes da gente começar se você ainda não é inscrito ó se inscreve aqui deixa o seu gostei que você vai aprender muito
hoje aqui e manda pro seu amigo para ele aprender também então vamos lá vou fechar tudo aqui então pra gente começar aqui o nosso projeto a primeira coisa que a gente precisa ter configurado se você não tem ainda eu não vou passar pelo passo a passo é o node JS Então você precisa ter o node JS instalado na sua máquina se você tá no Windows por exemplo como eu tô aqui só baixar o LTS aí dá um next next tem que ser o LTS E aí instalado Você pode abrir até o seu CMD e digitar
node espaço traço v e ele tem que devolver uma versão aí beleza instalado a gente já pode começar outra coisa que eu até Recomendo vocês instalarem aí tá você pode vir aqui em preço se quiser totalmente gratuito é um insomni tá tem como fazer de outras formas se você quiser também que é só pra gente consumir as rotas da nossa api pra gente poder ir testando conforme a gente vai desenvolvendo e claro depois a gente vai criar o front end Mas então pode baixar aí também só dar next é um programa normal a hora que
você abrir ele vai est basicamente parecido com isso aqui só que a corzinha vai est um pouco diferente porque o tema é diferente mas não tem problema tá a gente vai fazer isso junto aqui então vou Minimizar feito isso Ó vou até fechar essas duas aqui a gente vai usar aqui o mongo DB Atlas e também a gente vai usar o prisma como ORM o usando o typescript o node JS pra gente poder comunicar com o banco de dados para ele nos facilitar essa comunicação a query do nosso banco de dados por exemplo quando eu
quero buscar todos os clientes cadastrados na minha aplicação então o urm Vai facilitar toda essa parte de integração a parte da busca e também a parte onde a gente consegue fazer o esquema né do nosso banco de dados para criar aqui com o nosso mongo DB Bora lá então o primeiro passo ó vamos criar nossa api Então vou vir aqui vou abrir uma pasta aqui então Ó dentro aqui dessa pasta deixa eu abrir até o meu CMD aqui dentro ó então vou abrir o meu terminal ou seu CMD dentro da pasta que você quer e
eu vou criar uma nova pastinha aqui ó deixa eu até criar aqui chamada backend né show de bola vou vir no meu CMD deixa eu acessar CD backend Então vai no seu CMD abre aí a pasta do projeto que você criou né que na verdade essa pasta não tem nada ainda e a gente vai então inicializar o nosso projeto com nodejs para isso eu vou usar o npm então npm espaço init espaço traço Y aqui vou dar um enter para ele criar é um arquivo de configuração do package P Jason que é onde vai ficar
a estrutura né as versões as bibliotecas que a gente tem instalado dentro do projeto tá agora a gente vai abrir dentro do vs code deixa eu dar um code espaço ponto ou abre aí essa pasta do backend Ó já até apareceu o arquiv inho aqui abre essa pasta aí dentro do seu vs code deixa eu puxar aqui que abriu do lado beleza e deixa eu aumentar aqui né senão vai ficar muito pequeno legal então aqui agora primeiro passo a gente já tem o nosso arquivo package.js que é o arquivo Inicial aí do nosso backend próximo
passo que a gente vai fazer vou dar um CLS a gente vai instalar o typescript dentro do projeto então npm Install typescript e aí como o typescript Ele sempre vai rodar em ambiente de desenvolvimento porque ele não roda em produção a gente faz o Build do typescript Gera o arquivo JavaScript E esse sim a gente roda em produção então o typescript eu vou dar aqui um traço traço save traço Dev para ele instalar em ambiente de desenvolvimento apenas show então ó Dev dependen já tá aqui o nosso typescript se a gente olhar ele criou aqui
o nosso node modules que nada mais é do que o arquivo onde vai ficar todas as bibliotecas e os pacotes que a gente tem instalado dentro do projeto vão ficar aqui dentro tá então as bibliotecas e as dependências que esse typescript ou que esse projeto precisa vai ficar aqui dentro dessa pasta legal então a gente não precisa mexer aqui diretamente instalou o typescript agora a gente pode inicializar a configuração do typescript dentro do projeto para isso a gente vai rodar aqui então um tsc traço traço init e eu vou dar um enter aqui e show
de bola ele já criou ó o arquivo TS config que é o arquivo de configuração do typescript pra gente mudar se você quer o target diferente se a gente quer mudar a opção de Type checking das propriedades como strict que a gente pode colocar falso ou true por enquanto a gente vai deixar padrão depois conforme a gente precisa a gente vai mexendo e conhecendo sempre as propriedades ó por exemplo strict ele sempre tem do lado aqui ó o que que é essa propriedade Então isso é bem legal também Beleza vou fechar por enquanto e agora
aqui dentro a gente vai criar uma nova pastinha chamada Sr RC onde vai ficar de fato os arquivos da nossa api e dentro aqui eu vou criar um New file chamado server.ts e eu vou criar mais um New file chamado h. TS beleza dentro do src então a gente criou dois arquivos que um vai ficar responsável por iniciar o backend fazer as configurações iniciais chamar middlewares que a gente precisa e a outra a gente vai separar só para ter o arquivo de rotas das apis a rota que eu tenho da minha api beleza e agora
a gente precisa instalar que a gente vai utilizar aqui dentro desse nosso projeto aqui o o fast fy que ele é basicamente um Framework pra gente criar apis aqui com o node JS Beleza então o que eu vou fazer vou vir aqui no meu CMD deixa eu centralizar aqui npm instal novamente tá e a gente vai instalar aqui então o nosso ffy espaço já vou instalar também o @ ffy bar cores Beleza vou instalar esses dois caras padrão aqui o fast fy cuidado na escrita tá para não escrever errado e vou instalar também um npm
Install tsx e eu vou dar um enter aqui o tsx é uma biblioteca pra gente conseguir rodar os nossos arquivos typescript porque a gente precisa converter né rodar um arquivo que é JavaScript o typescript ele é apenas em desenvolvimento e por padrão o node JS não vai entender esse tipo de arquivo e nem um Import Export Então a gente vai usar essa biblioteca pra gente conseguir rodar e tem um Live Reload toda vez que a gente salvar um código ele automaticamente atualizar pra gente sem que a gente tenha que ficar parando de rodar roda novamente
então a gente não precisa fazer isso agora que a gente já instalou esses caras aqui a gente pode começar Então dentro do nosso server aqui que é onde vamos inicializar ele a gente vai importar aqui fastify from fastify então a gente importou ele aqui depois eu vou importar até já que a gente instalou o Import cores from @ fastify barcs e também a gente vai inicializar o nosso festify então const app ig a festify já que eu chamei ele com F maiúsculo abro aqui e eu vou passar uma propriedade aqui para ele devolver pra gente
um logger tá para ele devolver ali no nosso console então vou passar aqui como true Beleza agora o próximo passo é a gente inicializar para isso tem várias formas né eu vou criar aqui uma conch que é uma função chamada start ela é uma função assíncrona show de bola dentro dessa função aqui vamos criar aqui um try e dentro aqui um catch nesse catch vou pegar um erro e dentro desse erro aqui e dentro desse erro aqui já já a gente coloca para encerrar a aplicação dentro do try eu vou subir a nossa aplicação então
await E aí eu vou dar aqui um app ponto Listen abre os Chaves aqui dentro e aqui eu passo qual que é a porta que eu quero rodar então por exemplo port 2. 33 33 que é a porta que eu quero rodar e aqui dentro se eu salvar Ele já tá dando um errinho aqui falando pra gente acrescentar dentro lá do nosso typescript config né um es 2015 Então a gente vai vir em test config dentro aqui da Lib ó vou descomentar a Lib e vou colocar aqui dentro abro aqui es 2015 Beleza vou salvar
o meu TS config vou voltar e ó já parou o erro aqui dentro do catch caso caia no erro aqui eu vou dar um process ponto e aí eu vou dar aqui um Exit um ou seja vou parar vou encerrar o processo da nossa aplicação como a gente tá usando o typescript é legal a gente instalar as tipagens do node então eu posso vir aqui npm install @types bar node espaço tro trç save traço Dev porque apenas por ambiente de desenvolvimento né apenas os tipos para ele reconhecer aqui salvei vou voltar no meu código às
vezes é legal você salvar fechar e abrir aqui de novo e ó já reconheceu aqui que o nosso process é do tipo nodejs process aqui beleza agora que a gente já fez aqui para subir a aplicação fora da nossa função anônima eu vou dar um start então para rodar essa nossa função aqui beleza vou salvar e Primeiro vamos só testar para ver se tá funcionando vou até tirar esse cores aqui por enquanto ó e eu vou salvar aqui ó pra gente testar salvei só pra gente ver se ele vai devolver que tá funcionando aqui pra
gente rodar Nossa aplicação a gente pode vir dentro do package e criar um script de rodar essa aplicação ele vem até com um teste aqui a gente vai mudar ele para Dev então script de Dev pra gente rodar em desenvolvimento e dentro desse script aqui de n a gente vai então usar aquele nosso tsx pra gente conseguir rodar espaço watch para ele ficar olhando caso a gente salve alguma coisa no código ele dá um refresh E aí onde que tá o arquivo do server então src bar server.ts a beleza vou salvar e agora a gente
pode rodar como eu chamei de Dev então npm Run espaço Dev beleza e aí ele vai rodar E olha que legal já deu aqui Running então ele já deu aqui por enquanto né ele só vai mostrar isso a gente não criou nenhuma rota então ele já mostrou o console tá rodando a aplicação que que a gente vai fazer vamos criar uma rota agora de teste vamos vir dentro do nosso hout e vamos importar aqui do fastify a gente vai trazer aqui três caras que é o fast fy instance vírgula a gente vai trazer também o
fast fy plugin options esse cara aqui vírgula a gente vai trazer também o fast fy request opa fastify request vírgula festify reply aqui beleza esse cara aqui e beleza agora então a gente pode criar aqui um Export para exportar esse cara ass function vou chamar de RS beleza e aqui a gente vai criar aqui dentro as nossas rotas e essa nossa rota aqui quem usar ela vai passar para essa função aqui dois parâmetros primeiro que é o fastify dois pontos vou falar que esse essa propriedade que é do ffy é esse Instância aqui então a
gente vai receber a Instância que vai vir dentro dessa propriedade chamada ffy vírgula a gente pode também receber se a gente quiser options tá dois pontos que é do tipo que a gente já importou aqui ó Fast fy plugin options e aqui dentro a gente pode criar uma rota por exemplo Fast fy P get então quero criar uma rota do tipo get que a gente pode colocar até Barra test por exemplo vírgula ass abro aqui uma função anônima e dentro dessa função anônima a gente tem acesso a dois caras primeiro que é o request dois
pontos que é do tipo festify legal e vírgula reply dois pontos que é do tipo festify reply beleza que a gente já importou os tipos aqui em cima então quando eu coloco o mouse aqui ele já sabe qual que é esse tipo aqui que é do tipo festify request e esse é do tipo festify reply pro typescript entender se a gente tivesse usando o JavaScript eu não precisaria né passar o tipo aqui poderia passar apenas a propriedade só que como a gente tá usando typescript é legal a gente falar a tipagem aqui e agora aqui
dentro a gente pode retornar o que eu quiser por exemplo né como é uma rota de teste eu vou dar um return num objeto chamado Ok true aqui só pra gente ver tá salvamos e agora a gente precisa dentro do nosso arquivo do server executar essas nossas rotas aqui então dentro do nosso start aqui Primeira coisa eu vou carregar essas nossas rotas então await app. register o nosso HS aqui ó legal quando eu digitei HS pode pode ver que ele importou automaticamente aqui se o seu vs code Por algum motivo não importou o arquivo você
pode vir na mão aqui ó e importar tá Import from bar arquivo de HS importa lá o HS lembra de salvar o seu arquivo de HS importou a gente registra ele aqui se a gente quiser usar o cores já Import from @f fy barc Posso trazer diretamente aqui o cor e usar também ó await app. register no cores aqui dentro vou colocar o cores aqui como o primeiro tá e embaixo as nossas rotas embaixo a gente inicia a aplicação e eu vou salvar isso aqui e agora Toda vez que eu salvo o código ó salvei
aqui você pode ver que o meu CMD ele atualiza então ó se eu salvar ó ele dá um refresh no nosso CMD então ele já atualiza se a gente vir aqui no navegador vou puxar aqui pro lado né Legal E se a gente digitar aqui local host 2.33 33 barra teste que é o nome da Rota que eu criei Ó Barra teste e eu dei um enter aqui ele já devolveu um OK through então a gente já criou a nossa primeira rota do tipo get que Por enquanto né claro era uma rota de teste só
devolve Ok through Beleza agora qual que é o próximo passo aqui da gente fazer a aplicação O que que a gente já fez aqui a gente já configurou o start do nosso api a gente já inicializou o cores aqui já já a gente vai ver o porquê o nosso arquivo de rotas que é onde a gente vai chamar as rotas da api que a gente vai ter como de teste por exemplo de cadastro de clientes de deletar um cliente de listar os clientes a gente vai chamar as rotas aqui e a gente vai separar e
melhor essas camadas também e depois disso a gente inicializou ela aqui beleza então como a gente já tem uma rota eu consigo listar porque é do tipo get agora quando a gente for fazer mais rotas do tipo post para cadastrar um cliente a gente vai usar o insônia para testar legal então o próximo passo agora a gente vai utilizar o prisma.io que é um ORM pra gente comunicar com o banco de dados fazer o nosso esquema qual que é as tabelas tudo que a gente vai ter e também a gente vai usar o mongo DB
Atlas como um banco de dados aí não relacional E esse banco de dados o legal dele é que ele tem gratuito tá então ele já é hospedado é um banco de dados que a gente tem acesso ó de graça não precisa colocar cartão de crédito nem nada então você vai vir aqui em try for free então entra aí no mongodb.com vou deixar os links aqui abaixo e aí você vem aqui ó try for free Vamos criar o nosso banco de dados primeiro para depois a gente configurar no nosso projeto né então vou logar aqui ó
loga com o Google mesmo que acho que é mais rápido vou logar aqui como é o e-mail que é a primeira vez que eu tô criando eu vou responder as perguntinhas aqui vou colocar aqui vou dar aqui um terminar só responder as perguntinhas aqui beleza aí aqui né não sei porque meu Google tá traduzindo aqui aqui ele fala pra gente criar o nosso Database ele já até colocou de cara tá eu vou selecionar cuidado seleciona aqui o free beleza que é o gratuito pode adar aqui o provider aqui a gente pode até mudar que tem
em São Paulo né cadê cadê cadê São Paulo a São Paulo Então vamos criar em São Paulo para ser mais rápido o cluster aqui é o nome do banco tá a gente vai criar aqui pode ser clientes beleza clientes Create aqui vamos esperar Ah tem que fazer aqui o famoso né Vamos colocar aqui no meu beleza legal criou e aqui ele fala ó para mim criar aqui um password esse password aqui ele gerou sozinho então vou criar aqui pode ser Dev fraga você cria aí a sua senha claro eu vou criar aqui por exemplo e
projeto 1 2 3 depois eu vou mudar essa senha só pra gente poder fazer aqui vou dar aqui um Create então lembra do seu username e lembra da sua senha tá colocar aqui um Create e vai criar uma senha é mais forte também tá aqui ó ele fala pra gente colocar qual que é os tipos de IP que vão ter acesso no nosso caso aqui eu posso colocar se eu quiser só o meu aqui mas no nosso caso a gente quer que qualquer um possa ter acesso Então o que a gente vai fazer aqui ó
eu vou dar um finish and Close vou dar aqui um OK pra gente pro overview vamos lá vamos esperar aqui ele vai criar tudo né demora um pouquinho né se a gente vir aqui ó em Database deixa eu dar um zoom até ó em Database Ele ainda tá criando tá então quando ele vai criando aqui a gente vai vir aqui em Network access aqui ele tem já o meu IP Tá mas no meu caso eu vou dar aqui um add porque eu quero que qualquer um consiga ter acesso não quero limitar isso aqui e a
gente vai clicar aqui ó allow access from anywhere tá então qualquer um vai ter acesso vou dar aqui um confirm e Beleza vou apagar o meu IP aqui obviamente beleza e aí qualquer um vai conseguir fazer requisição ter acesso a isso aqui como por enquanto eu não quero limitar a IP ou algo do tipo vou deixar dessa forma para qualqu um ter acesso aí a esse nosso cluster Beleza então vamos esperar ele vai ele tem que ficar aqui que tá ativo ó mudou para ativo e o nosso Database access é ali o nosso usuário tá
vou vir no Database access vou vir em Edit também ele tem aqui qual que é o ID a gente vai vir aqui em build Roll a gente vai mudar aqui que a rle dele é Atlas admin beleza poderia deixar essa daqui que tá já ia funcionar tá porque aqui ele permite a gente conseguir ler o nosso banco e escrever algo no nosso Database também vou colocar Atlas admin aqui por enquanto depois você pode mudar então vou dar aqui um update user Ele já mudou ali legal demais se a gente voltar em Database a gente já
tem aqui ó deixa eu dar um ok legal ele já tem aqui que o meu cliente já está aqui deixa eu ver se ele já tá funcionando né Deixa eu ver aqui beleza ó já carregou e a gente pode vir aqui ó em Connect legal drivers e aqui node JS se ele não tiver selecionado e aqui ele já tem ó o driver aqui pra gente conectar no banco legal segura com essa aba aberta agora vamos instalar o prisma pra gente fazer essa comunicação Beleza então vou vi com start pra gente fazer bem o passo a
passo eu não só sair jogando no cmd vou até parar de rodar o meu projeto vou dar um CLS aqui e a gente vai vir aqui então né ele fala olha você tá começando aqui do início ou você já tem um projeto eu já tenho um projeto né então já tem um projeto mong DB a gente vai descer um pouquinho ele fala pra gente instalar vou copiar aqui show de bola vou instalar aqui ó dentro do meu projeto do nosso backend enquanto ele vai instalando a gente vai voltar aqui ó ele fala pra gente já
inicializar o prisma mas antes disso a gente vai vir aqui nessa opção Prisma client eu já vou copiar o comando do Prism client pra gente já instalar também né Eu já instalo de uma vez os dois ó instalei ele também vamos lá instalado depois disso agora a gente vai voltar aqui ó novamente aqui no nosso projeto com mong DB legal agora a gente vai inicializar a configuração do Prisma para ele gerar o arquivo de conexão com a nossa string para conectar com o banco então vou vir aqui vou rodar o npx espaço Prisma espaço init
eu vou dar um enter legal aqui demais então ele gerou pra gente ó um esquema que é onde a gente coloca a configuração ou seja as tabelas que a gente vai ter no banco de dados as relações que a gente vai querer e também ele gera um arquivo ponto env que é o arquivo de configuração do ambiente ou seja as variáveis ambiente que a gente vai ter e lá dentro a gente tem a nossa Database URL lembra da Database URL essa que a gente vai usar então Primeiro vamos ver o que que ele gerou para
mim vou Minimizar minha câmera para não atrapalhar e ó ele gerou o arquivo pon env deixa eu puxar bastante aqui esse arquivo.env ele tem o Database URL ele tem aqui toda a nossa string que ele vem com um exemplo né a gente vai vir dentro do Prisma que ele criou skima P Prisma e aqui ele já vem ó Database que é o arquivo de configuração O provider que é o banco a gente não vai usar postes né então a gente vai usar aqui o nosso mongo DB legal só faltou aqui mongo DB Cuidado para não
escrever errado e depois a gente vai colocar string legal aqui dentro a gente vai criar o nosso esquema por exemplo olha eu quero ter um Model ele vai ser chamado customer que é de clientes né eu vou abre e fecho Chaves e se o seu não tiver gerando né Essas cozinhas aqui eu recomendo que você instale aqui ó você vem aqui na extensão procura aqui por Prisma dentro do vest code nas extensões instala esse cara aqui ó Prisma instala ele e instala esse outro aqui ó Prisma traço insider e instala ele também ele vai te
ajudar a ter um autoc complete aqui e dar essas corzinha de Highlight aqui beleza então vamos criar um modelo do banco chamado customer beleza eu quero que tenha um ID que ele vai ser uma string que ele vai ser também ó um @id então el ele vai ser o AD dessa tabela e eu quero que ele seja gerado por padrão automático que a gente não tem que ficar criando ele né então @default dentro dele eu vou dar um ao abre e fecha parênteses espaço eu vou mapear que esse nosso ID na tabela ele vai ser
um campo pro nosso mongo DB entender underline ID tem que ser dessa forma aqui beleza E esse campo ele vai ser do tipo @ dbobject por causa que a gente tá usando o mongo DB depois disso eu quero que na minha na nossa tabela tem um campo name que seja uma string né o nome do do cliente eu quero que tenha um e-mail que seja uma string também eu quero que tenha um status por exemplo que seja um boolean e eu quero que tenha um created underline at que vai ser do tipo date time opcional
aqui e por padrão então default faltou ar aqui default por padrão eu quero que ele comece comece a ir gerando automaticamente só que aqui é Now beleza cuidado que é Now eu vou duplicar essa última aqui e o último a gente pode chamar de updated underline at para ele criar isso aqui caso a gente queira fazer filtro ou algo também a gente pode filtrar quando que for criado né quando criar um cliente ele vai registrar no created at beleza e outra coisa pra gente finalizar @ map eu quero mapear né que o nosso modelo aqui
customer lá quando for criado eu quero que se chame a tabela né a coleção como a gente tá usando mongo DM se chame customers Beleza vou salvar já já a gente vai ver aonde que vai vir esse customers aqui no nosso modelo Fica tranquilo salvei aqui e agora a gente precisa também além de fazer isso aqui colocar a nossa string de conexão lá dentro do nosso Database aqui do ponto Envy porque ele dá uma aqui uma por padrão né uma só de exemplo e a gente vai vir aqui dentro do mong DB vou copiar a
string que ele gera ele gerou a sua você copia a sua aí vou lá vou colar aqui ó vou até Minimizar aqui para vocês prestarem atenção o primeiro aqui é o usuário que você criou Ó o meu Dev Fraga dois pontos depois desses dois pontos ó eu vou pagar aqui e aqui é a minha senha então projeto 1 2 3 que aqui eu criei então é a sua senha Aí você coloca a sua senha depois disso @ clientes que é o nome do meu cluster Olha o meu cluster aqui ó clientes Beleza depois disso ele
tem a URL legal aqui o que a gente vai fazer é depois aqui do pon net Ó Barra a gente vai colocar o nome do cluster também ó clientes eu acho que é clientes né Deixa eu ver aqui ó clientes vou até copiar Ó Barra clientes interrogação e aí já tem aqui já veio aí por padrão Beleza vou salvar isso aqui salvou agora a gente pode fazer um teste Primeiro vamos vir aqui e eu vou dar aqui um comando do Prisma para ele conseguir mapear as nossas entidades aqui do nosso modelo pra gente conseguir gravar
no banco e ele dá aquele autoc complete então pro Prisma a gente vai rodar aqui um npx prisma Prisma generate beleza falta escrever direito aqui né generate e eu vou dar um enter aqui para ele gerar aí com Prisma ele tá carregando ó carregou legal próximo passo que a gente precisa fazer é dentro aqui do nosso src a gente vai criar um arquivo para conseguir conectar no banco fazer as buscas Então dentro aqui do src vou criar aqui um New Folder vou chamar de prisma dentro desse Prisma New file index.ts e dentro aqui então a
gente vai criar um arquivozilla e também inicializar ela então Prisma client igual a new Prisma client e vamos dar um Export default Prism client com o p minúsculo então a gente exporta esse que a gente iniciou aí beleza simples demais vou salvar e agora pra gente testar se o banco conectou aqui é muito simples também a gente pode fazer o quê A gente pode vir aqui e rodar né vou até Abrir outro CD deixa eu vir aqui ó botão direito Revel aqui só para abrir a pastinha do nosso projeto vou vir aqui no nosso backend
que é o nome do projeto Vou digitar aqui em cima CMD como eu tô no Windows só para mim abrir mais um CMD dentro da pasta do nosso projeto e eu vou rodar aqui npx Prisma espaço Studio e eu vou dar um enter aqui só pra gente ver se ele vai conseguir conectar com esse nosso banco aí ó ele já conectou já encontrou o customer aqui vou clicar nele legal ele já encontrou aqui já tá funcionando mas vamos testar na nossa api vamos lá vamos criar uma rota então da gente poder criar aí um novo
cliente então a gente já criou api já comunicou aqui com o banco de dados e a gente já já vai testar isso mais a fundo Vamos criar rota para cadastrar um cliente novo vamos lá então vou Minimizar aqui tudo deixa do jeito que a gente tá aqui coloca sua Api para rodar porque a gente parou de rodar aquela hora então vou dar aqui um npm espaço Run espaço Dev só para deixar a nossa api rodando então agora a minha api tá rodando se a gente testar lá na nossa rota de teste ó vou dar um
F5 aqui já devolveu o nosso Ok ó tô dando F5 Beleza então tá funcionando a nossa api agora vou diminuir aqui e vamos lá então dentro aqui ó do nosso src a gente pode separar melhor a aplicação para não construir a rota tudo num arquivo só né fica feio isso aqui então Vamos separar dentro do src eu vou criar mais uma pastinha aqui chamada controllers legal e dentro do src eu vou criar mais uma pastinha chamada Services beleza O que que a gente vai fazer aqui primeira coisa que a gente vai fazer dentro da camada
dos Services é onde a camada que de fato a gente vai salvar num banco de dados que a gente vai manipular isso aí e o Controller de fato é quem a rota chama a rota chama o nosso Controller passa lá se tem algum parâmetro por exemplo tem o nome um e-mail do cara que você quer cadastrar então o Controller recebe isso aí faz alguma validação e chama o nosso serviço e o serviço de fato vai no banco de Nados e faz o cadastro lá vamos ver isso aqui na prática Olha que legal vamos vir aqui
dentro do nosso Services dentro do Services vou dar um New file vou chamar aqui de Create customers service.ts Beleza vou até dar um rename aqui eu vou copiar o nome que eu criei beleza e agora aqui a gente vai criar o nosso serviço então Import Prisma client vamos importar o nosso Prisma client aqui o nosso arquivo lá que a gente criou legal e vamos criar nossa classe então Class vou dar aqui o nome que a gente criou abre e fecha a nossa classe dentro dela eu quero ter um método a gente pode chamar o método
de renda ou de Execute aqui pode ser também sem problema tá não tem problema dentro desse método aqui o que eu vou fazer aqui é console pon log rota foi chamada beleza só pra gente ver por enquanto não vamos fazer nada e eu vou dar aqui um return ok beleza só pra gente fazer o teste da nossa classe e vou dar um Export o mesmo nome que é o nome aqui pra gente exportar esse arquivo legal salvei aqui criamos a nossa camada aqui onde vai salvar no banco legal agora a gente pode lá criar o
nosso Controller para ela dentro do controllers New file Create customer controller. TS vou até copiar o nome aqui vou dar um enter criamos o arquivo e agora nesse cara aqui a gente vai então importar o FF ffy a gente vai trazer aqui o ftif ffy request e o fast fy reply beleza e vamos importar o nosso serviço Import P bar Services barra o nosso arquivo que a gente criou lá o nosso service salva ele e aqui dentro como a gente deu um Export dentro de Chaves A gente vai importar ele aqui dentro de Chaves importamos
o nosso serviço agora vamos criar nossa classe Class Create customer Controller que a gente deu o nome lá beleza dentro a gente vai ter um método chamado handle show de bola e aqui dentro o nosso método handle ele vai receber dois caras né que é o request vírgula e o reply como a gente tá usando typescript se a gente não passar o que que é o tipo ele não vai saber ele vai ficar como qualquer coisa mas esse nosso request ele é do tipo então dois pontos fastify request que a gente portou aqui em cima
e o reply ele também é do tipo Fast F reply legal e agora o nosso Controller vai receber aqui esse esses dois parâmetros e dentro do request a gente pode ter acesso a o request da nossa requisição e o reply com um response pensa aquilo que a gente pode devolver pro usuário devolver pra nossa frontend para quem tá usando eu vou inicializar o nosso serviço então conch customer service igual a new Create customer service o arquivo que a gente portou então a gente tá inicializando aqui a nossa classe lá que a gente criou do nosso
serviço agora que a gente inicializou eu posso então chamar o método dentro dela const customer igual a a wait para esperar aí o nosso serviço ser executado Então vou chamar aqui o nome que eu dei ponto método que a gente deu o nome de Execute não precisa passar nenhum parâmetro e ele vai devolver então o nosso Execute nada mais é do que esse método aqui dentro da nossa classe de serviço ele vai comunicar com o banco e depois que ele fizer ele devolve aqui pro nosso Controller então o Controller recebe o retorno dentro da variável
que eu chamei que eu chamei de customer e eu vou dar um reply p send ou seja vou devolver pra nossa api o que o serviço está me devolvendo indo aqui legal salvei aqui e vamos dar o Export nesse arquivo então Export Create customer Controller exportamos nosso arquivo pra gente conseguir importar Beleza agora então a gente pode ir lá na nossa rota criar mais uma rota vamos criar uma rota aqui ó vamos lá fastify pon post porque agora eu quero uma rota do tipo post o verbo né o método http agora eu quero do tipo
post porque é do tipo para criar algo né para criar algo Eu quero criar um novo registro um novo cliente na minha aplicação então do tipo post e eu posso dar o nome aqui de barra customer por exemplo tá vírgula assin ass que aqui vou receber uma função anônima e essa função anônima vai receber aqui o request dois pontos fastify Cadê o request vírgula reply dois dois pontos fastify reply beleza e agora o que eu vou fazer aqui é chamar o nosso Controller Bora lá vou importar o Controller pon Barra controllers bar Create aqui vamos
importar ele aqui e agora a gente pode chamar então agora return New vamos chamar o nosso Controller abre e fecho aqui ponto o nome do nosso método e se a gente lembrar ó ele precisa passar dois argumentos a gente falou que esse nosso método do Controller espera o request e o reply então aqui eu vou passar para ele o nosso request vírgula e o reply também beleza e eu vou salvar simples demais então agora quando eu bater nessa requisição aqui do tipo post bar customer eu estou chamando meu Controller meu Controller vai receber o nome
algumas coisas do Body se a gente for mandar para cadastrar o nome e vai passar pro serviço o serviço que vai ficar responsável de fato por cadastrar no Banco por fazer todo esse trabalho aqui e devolver pro Controller então ele dá um return devolve pro Controller o Controller recebe e devolve pro usuário vamos testar esse fluxo inteiro salva aí o seu projeto verifica se ele tá rodando aqui e agora como a gente criou uma rota do tipo post eu não consigo testar pelo navegador então a gente pode usar um aqui ó eu vou dar aqui
um mais http request eu vou colocar o RL aqui deixa eu até copiar ela aqui ó colocar aqui colocar o host 2.33 33 barra o nome que eu dei ó customer vou colocar aqui ó Barra customer do tipo post e como a gente por enquanto não tá enviando nada no Body eu vou só dar um send ó send aqui e ele devolveu um ok true Beleza vou até mudar aqui ó dar dois cliques para mudar o nome Ó cadastro cliente Beleza já tá funcionando agora a gente pode de fato mandar aqui no Body dessa requisição
eu quero que você me mande um Jason e dentro desse jasson quero que você me mande por exemplo propriedade name que é o nome do usuário por exemplo Mateus e também eu quero que você me mande uma propriedade e-mail com teste @test pcom quero que você me mande essas duas propriedades para conseguir cadastrar de fato ele no banco de dados faltou aqui dentro do name ó eu preciso envolver ele entre aspas aqui beleza e o último item aqui não precisa dar vírgula no final Beleza então ó se eu dar um sent continua funcionando por enquanto
mas eu quero então agora como é que eu faço para pegar dentro desse json lá na nossa api o nome o name e o e-mail que você tá me mandando então ele chama o Controller o Controller tem acesso ao request dentro do request a gente tem acesso ao Body ao que você tá me mandando a query parms aos headers da aplicação Então nesse nosso caso aqui a gente pode pegar do nosso request Então a gente vai vir aqui conche abre e fech os Chaves igual a requestbody legal e eu quero pegar aqui dentro o name
e o e-mail só que se a gente deixar assim ia funcionar só que o typescript ó ele não sabe o que que é esse e-mail o que que vai vir dentro do name então a gente pode falar que dentro do Body as abre e fecha o Chaves eu vou receber uma propriedade name que é do string vírgula eu vou receber uma propriedade e-mail Opa e-mail que é uma string também que é um texto agora já parou de dar o erro só pra gente testar vamos dar aquele console famoso aqui ó console log no Name e
no e-mail aqui e eu vou salvar vamos testar de novo ó vou dar aqui o send Beleza deixa eu abrir o console aqui e olha que legal ele deu Aqui ó Mateus teste que é o e-mail e a rota foi chamada né a rota foi chamada porque o nosso serviço tá dando um console de rota aqui beleza então a gente já tá recebendo quando você me manda no Body o name e o text também que é o e-mail ali né então agora o que que eu preciso fazer quem que vai cadastrar no banco é o
serviço então eu recebi aqui do nosso Body se a gente quisesse fazer uma tratativa aqui também e agora eu vou passar pro nosso serviço esses caras lá no nosso serviço a gente precisa falar que esse método vai esperar que você me mande um nome um e-mail aí então vou criar uma tipagem aqui ó interface Create customer props que vai esperar que você me mande o name que é uma string e um email que é o my string aí eu vou falar aqui então que esse método Execute abre e fecha o Chaves eu espero receber o
name e um e-mail dois pontos que é do tipo Create customer props então a gente tá fazendo um contrato de quando você usar essa função Você precisa me passar um nome que ele é do tipo string na verdade não é nome tá é name e um e-mail que é uma string também que é a tipagem que a gente usou do typescript então se eu salvar aqui ó e eu olhar o meu Controller agora Ele já tá dando erro ele já tá falando ó não vai usar mais Execute aqui sem me passar parâmetros então ele tá
falando olha você precisa passar aqui ó argumentos que é o name e o e-mail e você não passou nada então o que eu vou fazer vou abrir Chaves aqui dentro e eu vou passar a propriedade name que a gente recebe aqui do Body e vou repassar também o e-mail Então em vez de dar um console ali a gente passa pro serviço e eu vou salvar e agora no serviço a gente recebe os dois aqui como parâmetro porque a gente passou no Controller através aqui do parâmetro Beleza então a gente recebe ele aqui agora eu posso
de fato ir no banco de dados cadastrar por exemplo ó se eu if se eu não mandar o name ou se eu não mandar o e-mail vou fazer uma tratativa bem simples aqui eu vou dar um if aqui e eu vou dar aqui um throw New error preencha todos os campos Beleza então a gente vai lançar uma sessão um erro aí na nossa api agora se você me mandar aí o que eu quero fazer eu quero ir no meu banco de dados de fato cadastrar um novo item do do meu banco com esse nome com
esse e-mail Então a gente vai acessar aqui um cons chamar de customer igual a a wait para esperar aí o nosso Prisma client para acessar então o nosso Prisma client que é o nosso ORM E se a gente dar um ponto aqui ó e eu digitar customer olha que legal ele já sugere aqui esse customer ele já entendeu quando a gente gerou aquele generate então ele fez ali o mapeamento do nosso esquema entendeu que a gente tem um modelo chamado customer e agora a gente pode vir aqui ponto customer P Create então quero criar no
meu banco abro Chaves aqui dentro vou passar uma propriedade de data abre e fecha Chaves aqui dentro e esse data se a gente olhar é os itens que eu preciso passar no meu caso lá no meu esquema ó eu tenho que colocar o nome eu tenho que colocar um e-mail e um status que é bolean então se o usuário vai me mandar o name o e-mail vou pegar name vou repassar aqui o e-mail eu vou repassar aqui como os dois são o mesmo né Vou só repassar e eu preciso passar um status também quando cadastrar
o usuário eu quero falar que o status vai começar como true Beleza então ó já criamos aqui depois que você criar um usuário eu quero devolver pro nosso Controller aí então ao invés de devolver um ok th eu vou devolver o que ele mandar para mim desse customer aqui vou salvar isso aqui e a gente pode testar então agora o fluxo é eu estou mandando na requisição o nome e o e-mail Né o name e o e--mail o meu Controller recebe esc chama o serviço repassando esses caras aí que a gente precisa o serviço recebe
esses parâmetros vai lá faz uma tratativa no caso a gente faz só uma verificação e vai no banco de dados e cadastra de fato e devolve pro nosso Controller Qual que é o item que foi cadastrado no banco e aí o Controller recebe aqui nessa variável e devolve então pro usuário usando o reply Né o response Então se a gente testar o fluxo inteiro aqui vamos ver se tá cadastrando salvar tudo isso aqui vou vir minha api ó já tá rodando aqui já né Beleza vou minimizar e vamos lá então agora eu vou clicar aqui
em cadastrar ó cliquei vamos ver olha que massa né ele já devolveu pra gente um um objeto deu aqui o status code 200 que deu tudo certo devolver um ID o nome o status through o e-mail e o nosso created e updated será que tá no banco mesmo se a gente olhar aqui ó tem duas formas da gente ver a gente pode vir no próprio mongo DB Atlas se a gente vir aqui em browse Collection vamos lá e a gente olhar Ó tem uma customer aqui e olha que massa né a gente já tem aqui
o nosso primeiro item que é o primeiro primeira coleção né porque a gente tá no mongo DB algo não relacional então é coleções ali então a gente tem uma coleção aqui de customers dentro a gente tem ali então Um item né que a gente chamou de Mateus e um email Tem tudo aqui então foi cadastrado se a gente olhar no Prism Studio A gente pode dar aqui um refresh se você quiser fechar o Prism Studio abrir de novo é só você ir naquele CMD que a gente rodou o npx ó vou ir no outro CMD
a gente deixa o nosso CMD rodando minimiza abre outro CMD dentro da pasta do projeto e roda npx Prisma espaço Studio e Dá um enter aí e ele vai abrir ó no seu navegador aqui dentro do customer e a gente já tem aqui ó Mateus cadastrado do banco de dados Então já tá funcionando comunicou com o banco e aqui a gente já já criou a nossa api né mas vamos criar mais aqui antes disso ó dá um like se inscreve aqui Comenta alguma coisa se você tá gostando até aqui bora lá então Ó pra gente
continuar aqui vou Minimizar aqui pro lado a gente já falou que a gente I trazer algo mais bacana então cadastrar falta listar e deletar agora que a gente já explicou como que funciona o Controller o serviço a gente fez bem passo a passo vamos acelerar um pouquinho vamos lá vamos aqui então vamos supôr que nossa rota de cadastrar um cliente tá OK agora a gente vai vir aqui então vamos lá dentro do nosso service eu vou criar um novo serviço e a gente vai chamar aqui de list customers service.ts Beleza vou copiar o nome do
arquivo aqui para não escrever errado e a gente vai criar ele aqui então Import Opa Import Prisma client vamos importar o nosso Prisma client Class Vamos criar nossa classe list customer service que vai ser responsável por ir no banco e listar os nossos clientes cadastrados beleza vamos dar aqui um Export show de bola e aqui dentro a gente vai ter o xnc function aqui a gente vai chamar de Execute Execute que é o nome já que a gente tá seguindo nesse padrão e aqui dentro como a gente tá numa classe sem querer eu coloquei function
aqui não precisa né porque a gente tá numa classe aink Execute aqui aqui dentro Então nada mais é do que eu vou buscar tudo do meu banco todos os nossos clientes Então conch vou chamar de customers nossos clientes igual a a wait Prisma client ponto Vou acessar o nosso Model chamado customer ponto como que eu quero buscar todos a gente vai usar o find many o find many é encontrar vários né encontrar todos que a gente conseguir lá find many abre fecha o parênteses não vou passar nenhum argumento nenhum parâmetro de filtro porque eu quero
de fato buscar todos os itens lá do meu banco que eu tenho cadastrado dentro dessa Nossa coleção de customers Então a gente vai buscar ele vai devolver essa Array pra gente aqui dentro do nosso variável e eu vou dar um return customers Opa escrev errado aqui né customers Legal a gente devolve lá pro nosso Controller que tá executando esse serviço salvamos aqui posso fechar vamos no nosso Controller Vamos criar agora o Controller dele então list customers controller. TS deixa eu copiar o nome do nosso Controller e vou entrar aqui vamos criar aqui o nosso Class
opa vamos Export legal eu vou só copiar o Import aqui pra gente não ter que fazer de novo do festify aqui né Beleza e vamos importar o serviço também que a gente acabou de criar ponto ponto barra pra gente descer uma pasta acessar a pasta de serviços e Acessar agora o novo né que é o list aqui e vou importar ele então lembra lá de salvar o seu serviço de list beleza importou aqui agora aqui dentro a gente vai ter um assn a gente chamou de handle que é o nome do do método esse handle
ele espera o nosso request request e o reply o reply é do tipo fast fy reply e o nosso request aqui ele é do tipo fastify request eu vou inicializar o serviço então conch vou chamar aqui de list customer service igual a new list customer service então a gente tá inicializando a nossa classe aqui e agora eu vou executar o nosso serviço então con customers igual a a wait para ele esperar o nosso list customer Service então a gente tá chamando a variável aqui com o serviço que a gente criou ponto Execute o Execute do
nosso serviço ó não espera nenhum parâmetro legal e aqui então a gente está executando ele e usando a wait para esperar isso porque é algo assíncrono a gente vai no banco de dados faz uma consulta então aguarda para mim E aí a hora que você tiver o retorno ele vai devolver nessa variável aqui e a gente dá aqui um reply pon send com essa variável aí então devolvo o que o me serviço me passou beleza salvamos aqui criando controle criado o serviço que ele chama legal agora a gente precisa criar rota né então vamos lá
na nossa routes vou duplicar nossa última rota aqui que é a de post mas aqui vai ser ponto get porque eu quero listar os serviços então é do tipo get para listar informações e como é uma lista eu vou dar barra customers para listar os clientes aqui então a gente precisa importar o nosso novo Controller pon bar controllers Barra list Opa list aqui vamos trazer aqui o nosso e vou chamar ele aqui ó vamos até só substituir return New list customers Controller que a gente acabou de criar ali o nosso Controller de list salva ele
cuidado com os nomes das classes tá e a gente já chamou ela aqui usamos o handle Passamos o reply que a gente recebe aqui do fash fy o request pra gente acessar a requisição e o reply pra gente devolver a gente passa pro handle E aí o nosso Controller recebe né E chama o serviço pode fazer as verificações vamos salvar para testar então então eu vou até cadastrar mais um cara aqui mais um cliente Vamos colocar aqui o Lucas Silva e aí eu vou colocar aqui Lucas @test Vou cadastrar mais um ó cadastrei e agora
eu vou duplicar essa minha rota aqui ó vem com a setinha aqui duplicate e a gente vai listar clientes o nome da Rota e aí a gente deu ó barra customers então Barra customers do tipo get e ele não espera nenhum Jason né então Ó eu não vou passar nada Nobody você clica aqui ó Nobody vou dar aqui um send E olha que sensacional né então agora a gente tá listando todos os clientes que eu tenho cadastrado no meu banco de dados mole demais né a gente tá listando aqui o nosso primeiro que é o
Mateus o segundo que é o Lucas né que eu acabei de criar e Ah será que tá mesmo vamos lá no nosso vamos no mongo de be Atlas aqui mesmo vamos vir aqui deixa eu dar um refresh aqui vamos esperar vamos vir em customer e olha quem tá aqui o Mateus e o Lucas tá salvo no nosso mongo DB legal pra gente finalizar isso aqui porque eu não vou te desapontar né a gente vai fazer o backend e vamos fazer o front end né falta a nossa rota porque a gente falou que a gente além
de listar a gente vai deletar né então vamos lá vou vir aqui vou Minimizar minha câmera aqui então vou fechar esses arquivos aqui vamos lá criar o nosso serviço aqui de deletar um cliente New file chamar aqui de delete customers service.ts Class delete customer service aqui vou mudar aqui o Export delete customer Service assc Execute só que esse caraa aqui de fato pra gente poder deletar um cliente eu preciso que você me mande o ID do cliente que você quer deletar aí eu consigo ter de alguma forma uma forma de buscar o cliente lá e
deletar al do meu banco de dados Bora lá então pra gente fazer isso aqui eu preciso agora de fato que nesse método quem Chamar esse método aqui me mande o ID dele me mande o ID tem que ser algum ID então eu vou vir aqui vou falar que eu espero que você me mande um ID Tá eu vou até criar aqui uma tipagem separada ó Inter Face do typescript Vou falar que é the customer props eu vou ter um ID que é uma string e agora eu vou falar aqui dentro nessas Chaves aqui ó dois
pontos vou falar que ele vai seguir a nossa tipagem que vai receber um ID que ele é uma string beleza Posso até fazer uma verificação né se você não me mandar um ID eu vou dar aqui um New error aqui solicitação inválida vou colocar só esse erro genérico aqui tá depois disso a gente vai então buscar o nosso item no banco de dados então con find customer igual a aight e agora eu vou importar aqui o prisma Cent então Import Prisma client já completou para mim cuidado com o caminho tá ó ponto pon barra Prisma
como dentro a gente chamou o arquivo index você poderia chamar barra index ou sem a barra no final e agora ait Prism Cent customer pon find first então vou procurar um então find first abro Chaves aqui dentro Where então eu quero fazer um we porque eu quero filtrar dentro dos clientes que eu tenho cadastrado apenas o cliente com o ID que você me mandou então find first onde o ID desse item aqui for igual ao ID que eu tô recebendo então eu vou procurar lá aqui e ele vai devolver dentro dessa nossa variável chamada find
customer E aí eu vou verificar olha if se não tiver encontrado um find customer eu vou dar aqui um throw New error Vou colocar aqui cliente não existe beleza colocar isso aqui mesmo vou lançar um erro uma exceção aqui legal se quisesse devolver um retorno com um objeto vazio um arrei vazio poderia também no meu caso eu vou devolver aqui uma exceção Agora se ele conseguiu encontrar agora então eu vou deletar esse cara do banco então await prismac Cent customer delete para deletar algo AB Chaves deletar algo pra gente conseguir filtrar porque eu quero deletar
Apenas Um item onde o ID dele for igual a esse nosso find customer pid Beleza então Estou deletando do meu banco apenas o item onde o ID dele é igual a esse que eu recebi então apenas aquele nosso cliente aí depois que eu deletar eu poderia posso devolver apenas um return colocar aqui uma message por exemplo deletado com sucesso Beleza então vou devolver apenas uma mensagem vou salvar criamos o nosso serviço vou fechar e agora vamos lá no nosso Controller New file delete customer controller. TS deixa eu copiar aqui o nome da classe né Vamos
no arquivo Class eu vou dar aqui um Export beleza Opa ficou com trss aqui vou copiar aqui os nossos imports do ffy só para agilizar copiar aqui o Import do ffy vamos importar o nosso serviço legal ponto pon bar Services opa Services bar delete Não esquece de salvar aí o seu serviço do delete V importar aqui dentro né o nome e aí eu vou ter o nosso assy handle ele espera aqui o nosso request do tipo festify request e o reply do tipo festify reply vamos inicializar aqui o nosso serviço então com customer service ig
a new delete customer service vamos inicializar ela aqui e agora a gente pode executar então con customer igual a wait customer service Execute abre o parênteses aqui e olha que legal né ele fala pra gente passar um ID como é que eu vou pegar o ID Então como a gente vai deletar algo Eu quero por exemplo ó vou duplicar aqui a nossa rota de listar vou duplicar eu vou colocar aqui deletar cliente vou dar um Create e o deletar eu quero que a rota seja do tipo delete pode ser barra customer e eu quero que
você me mande por por exemplo no query parms no query parms eu quero que você me mande uma propriedade por exemplo chamada ID com o ID do cliente por exemplo 2 3 4 2 3 4 então quando a gente manda na propriedade query ele vai criar aqui sempre Ó o preview da Rota basicamente ele é a nossa rota Opa deixa eu criar maior aqui né ele vai criar a nossa rota barra customer e interrogação ID igual aqui então como é que eu faço para receber o qu parms aqui então conche abre fecha os Chaves pra
gente desconstruir igual request pra gente acessar a nossa request ponto eu tenho acesso ao Body mas eu tenho acesso também ao query e dentro do query eu poderia pegar o ponto ID mas como a gente já vai desconstruir aqui eu vou pegar o ID aqui eu vou só dar um request P query E aí eu posso dar um as afirmando que dentro aqui a gente vai ter um ID que ele é do tipo string que a gente vai receber então recebemos ele aqui e agora eu vou passar lá pro nosso Execute esse ID que a
gente tá precisando passar para ele que é o ID que a gente vai mandar lá beleza agora o serviço vai fazer e vai devolver aqui o nosso customer eu vou dar aqui então o reply p send pro nosso customer aqui então vou devolver aí pro nosso frontend Beleza vou salvar isso aqui criamos o Controller e agora a gente pode criar a rota pra gente finalizar vou duplicar Nossa rota aqui de get né E a gente vai ter a rota agora do tipo delete que é para deletar algo E aí é barra customer que eu quero
que seja vamos importar o Controller de delete from bar controllers bar del vamos trazer aqui dentro o nosso delete E aí ó na nossa rota de delete eu vou dar um New nesse nosso Controller ponto handle passando aí o reply e o request legal então agora a gente criou uma nova rota aqui e ele chama o Controller Controller vai pegar da request da requisição ou ID a gente então chama o nosso serviço passando esse ID esse ID recebe a gente faz verificações busca el se encontra ou não e depois deleta do banco a gente pode
testar agora salva tudo aí deixa eu ver aqui está rodando e vamos lá né Vamos t isso aqui vou vir aqui no nosso delete né vamos vir aqui no customer e pra gente vir ó vou no listar aqui eu vou pegar um ID aqui do Lucas Silva copiar aqui o ID do Lucas Silva copia certinho Vamos aqui no Nossa rota de deletar do tipo delete ID parmetro do quy eu V passar aqui ó Qual que é o valor então colei aqui cuidado para não deixar espaço antes nem espaço depois aqui do nosso ID Beleza vou
dar aqui um send vamos ver deletado com sucesso de 200 show de bola Vamos verificar vou dar aqui um refresh aqui no nosso Pode ser aqui no nosso cluster mesmo vamos verificar aqui ó tem que ter deletado ele Ó olha que legal só tem o Mateus deletou do nosso banco e se a gente for também na nossa rota de listar os clientes ó vou tentar aqui listar os clientes ó já não tem mais vamos cadastrar mais um aqui vou cadastrar Ana Caroline E aí Vou colocar aqui Ana @test cadastrar se eu vir aqui em listar
ó já temos a Ana então agora a gente criou basicamente um crude né a gente criou uma ap onde cria dados no banco de dados onde a gente deleta dados no banco de dados onde a gente lista também separando o Controller e o serviço aqui separando um pouquinho a nossa aplicação para não ficar tudo junto né tem algumas coisas que a gente pode fazer claro com certeza mas pra gente criar algo bacana para depois ir pro frontend só pra gente finalizar agora o projeto aqui do backend a gente vai vir dentro do nosso server aqui
uma coisa que a gente pode fazer é criar um middleware ou seja entre as rotas aqui pra gente poder tratar caso a gente lance uma exceção o que que vai acontecer né Por exemplo se a gente vir no nosso Service do Create se a gente não mandar o nome ou um e-mail eu tô lançando uma excessão vamos testar vou vir aqui no meu Create pode fazer só junto comigo aqui só visualizar ó vou tirar aqui vou deixar como se eu tivesse só mandando o nome ou por exemplo vou até voltar não tô mandando nada no
meu Body e vou dar um send aqui ó ele vai dar aqui um Bad request Então ele deu um 400 e ele vai dar um erro aqui também ó tá se a gente mandar por exemplo um Jason sem mandar nemum name e nem nada ó vou dar um send aqui novamente ele deu um server internal error devolveu aqui um erro se a gente olhar também ele vai gerar um erro gigante tá então no nosso caso o que a gente vai fazer aqui a gente vai criar aqui um midor deixa tirar minha câmera da frente vamos
lá no nosso server só para não ficar sem nada tá então a gente pode fazer várias tratativas aqui mas claro só para ser algo aqui que a gente consiga gravar num vídeo vou dar aqui um app que é o nosso Instância aqui do nosso fash set error handler aqui dentro a gente vai criar aqui um error handler e a gente recebe aqui o error a gente pode pegar o request caso a gente queira e o reply também tá no nosso caso eu vou ter aqui um reply ponto code quero dar um erro code 400 o
status code 400 pon send abro Chaves eu vou ter um message E aí eu quero pegar a mensagem que eu estou recebendo lá do nosso exceção então error pon message Beleza a gente poderia fazer tratativa do tipo de erro que eu tô recebendo ou qual que é o erro para exibir com a 400 ou 500 por enquanto eu vou deixar só assim tá Vou salvar ó já tá rodando aqui o meu projeto vou até vir aqui ó e vou listar todos os clientes só para testar ó beleza tá funcionando legal vou vir em cadastrar não
tô enviando nada tô enviando um objeto vazio e eu vou dar aqui um send e olha que legal Bad request que é um erro aqui de Bad request 400 e tem um erro chamado message aqui poderia ser error né também preencha todos os campos que foi o que a gente lançou lá na nossa exceção Beleza cadê o nosso Create a gente lançou esse erro aqui beleza então só claro né pra gente poder ter algo bacana aqui agora então basicamente a gente finaliza deixa eu dar um zoom legal aqui o nosso backend agora a gente vai
usar esse nosso back end para poder desenvolver todo o nosso frontend também dessa aplicação consumir esse backend aqui e para você que ficou até aqui não esquece de se inscrever aqui no canal dá o seu gostei aqui e se você quer aprender de uma vez por todas desenvolver sites sistemas web Aproveita que a nossa turma tá com as inscrições abertas para você que quer aprender tem o suporte passo a passo grupo exclusivo desenvolver projetos profissionais e sair do zero sair pronto para mercado de trabalho O link tá aqui embaixo e aproveita que as vagas são
limitadas então eu te vejo no próximo vídeo pra gente fazer o front end desse projeto te vejo lá