vehicles-api

Início do projeto instalando dependências:

  • Express, Multer, Prisma

Logo em seguida, criei uma imagem no Docker para hospedar o banco de dados MySQL.

===== CREATE =====> "/vehicles/create"
Rota de cadastro do veículo foi criada, com população do banco relacionando a tabela Veículo e Imagens. Na rota há a importação e conversão das imagens para binário e envio junto com o corpo ao Controller. No Controller é feita a conversão dos dados para seus respectivos tipos. Em seguida a solicitação da criação do veículo para a camada Model. Após criado, o id é capturado e enviado juntamente às imagens para a camada Model das imagens, onde são inseridas no banco, com o relacionamento com o respectivo veículo. Abaixo a imagem das duas tabelas com dados fictícios:

image image

Abaixo a imagem do Postman com a requisição feita e retorno após cadastrar os dados.

image

===== DELETE =====> "/vehicles/delete/id"
Rota de exclusão criada, buscando o parâmetro (id) da url e enviando para o Controller. Na camada Controller, o id é enviado para a camada Model de exclusão das fotos, de forma que exclua todas as fotos que possuem o campo "veiculoId" igual ao id recebido. Logo em seguida, o Controller envia o mesmo id para a camada Model de exclusão do veículo e assim o faz através do próprio id do veículo.

Print do Postman ao executar o comando para excluir:
image

Prints do prisma studio antes e depois da exclusão:
Imagens:
image image

Veículos:
image image

===== GETALL =====> "/vehicles"
Rota de obtenção de todos os resultados. Veículos e suas respectivas imagens:
image

===== GET UNIQUE =====> "/vehicles/:id"
Rota de obtenção de um veículo específico, com suas respectivas images através de seu id. O id é enviado como parâmetro na rota, passa pela camada Controller e é enviado à camada Model, onde faz a busca no banco de dados do veículo de acordo com sua id. image

===== UPDATE =====> "/vehicles/update/:id"
Rota de alteração de dados de um veículo. Ao alterar algum dado no front-end, deve ser recebido pela rota, os dados originais que não foram alteredos, os novos dados e um array de imagens com as que permeneceram, com as novas e excluídas as deletadas ou alteradas. No momento em que os dados entram na rota, são enviados à camada Controller, onde os dados são convertidos para os respectivos tipos, logo em seguida é chamada a camada Model de exclusão de imagens, onde são excluídas todas as imagens que tem o id do veículo cadatrado no campo de relacaionamento. Após, é feita a altereção de todos os dados na tabela Veiculo (dados não alterados são recadastrados e os alterados, cadastrados no lugar dos antigos). Após isto, as novas imagens (novas imagens e antigas que não foram alteradas, nem excluídas) são enviadas para a camada Model de cadastro de imagens, vinculadas ao id do veículo, através do campo de relacionamento.

Antes do update:
image

Update:
image

Depois do update:
image

===== DEPLOY DO PROJETO PARA PRODUÇÃO =====

  • Conectar no Railway (railway.app) com as credenciais do GitHub
  • Create a new project
  • Seleionar o repositório (nesse projeto, como o repositório é publico, o Railway não aceita o deploy)
  • Criar a instancia do DB: New -> Database -> Add MySQL -> Connect -> copiar DATABASE_URL
  • Add variables: Variables -> Variable Referenc - > DATABASE_URL -> Add
  • Rodar o comando "npx prisma generate" no terminal
  • Settings -> Generate Domain

Obs.: Este é um repositório público, portanto o deploy no Railway não é permitido. Para fazer o deploy para o cliente, basta ter o projeto como Privado no GitHub e seguir os passos acima.