Skip to content

Api restfull seguindo principios SOLID e POO com mongdodb e typescript

Notifications You must be signed in to change notification settings

Alineol/carShop

Repository files navigation


API-Concessionária de carros

Contexto

Simulação de uma api de uma concessionária, na qual é possível fazer um crud de carros. A Api foi construída no modelo MSC(model, service e controller). Sendo a model responsável pelo BD, service para as regras de negócio, e controller para lidar com as requisições e respostas. Também foram realizados testes unitários com Mocha Chai e Sinon.

Habilidades desenvolvidas durante o desenvolvimento da API
  • Estruturar uma aplicação em camadas;
  • Delegar responsabilidades específicas para cada camada;
  • Melhorar a reusabilidade do código;
  • Entender e aplicar os padrões REST, SOLID E POO;
  • Escrever assinaturas para APIs intuitivas e facilmente entendíveis;
  • Utilizar Zod e express-async-errors para tratamento de erros; plicação backEnd com banco de dados na nuvem através heroku**; 🔥
  • Realizar testes unitários tentando buscar cobertura de 100% do código.
  • Uyliziar o TypeScript;
  • Aprender a utilizar o Mongoose
Tecnologias utilizadas
  • Mocha
  • Sinon
  • Node
  • TypeScript
  • Chai
  • Joi
  • Express
  • MondeDb
  • nyc
Como rodar o projeto na sua máquina:

🐳 Rodando no Docker vs Localmente

Com Docker

Pare o mongo se ele estiver rodando na sua máquina local

Rode os containers com o comando docker-compose up -d.

  • Esse serviço irá inicializar dois containers chamados car_shop(node) e car_shop_db(mongodb).
  • A partir daqui você pode rodar o container via CLI ou abri-lo no VS Code.

Use o comando docker exec -it car_shop bash..

  • Ele te dará acesso ao terminal interativo do container criado pelo compose, que está rodando em segundo plano.

Instale as dependências com npm install

Para iniciar a aplicação: npm run dev

  • Todos os comandos npm devem ser rodados dentro do container.

Sem Docker

Instale as dependências com npm install

👀 De olho nas dicas:

  1. Para rodar o projeto desta forma, obrigatóriamente você deve ter o node instalado em seu computador.

Para iniciar a aplicação: npm run dev

Informações sobre teste

Nessa aplicação foram realizados apenas testes unitários. Para rodar os testes localmente não é necessário que a aplicação esteja iniciada.

No terminal digite npm run test

  • Esse comando iniciará os testes

No terminal digite npm run coverage

  • Esse comando iniciará os testes e no final apresentará um relatório de cobertura dos testes.
Validações e ações das rotas:
get: /cars
  • Rota para buscar carros
  • Busca todos os carros do bd(é necessário que você cadastre carros antes, se não retornará um array vazio)
  • Retorna status 200 em caso de sucesso
post: /cars
  • Rota para criar um carro
  • Responde com status http 201 e os dados do carro criado;
  • Response com um erro caso o req.body esteja errado;
  • Formato do body:
Atributo Descrição
model Marca e/ou modelo do veículo. Deve ser uma string com, pelo menos, 3 caracteres
year Ano de fabricação do veículo. Deve ser maior ou igual a 1900, porém menor ou igual a 2022
color Cor principal do veículo. Deve ser uma string com, pelo menos, 3 caracteres
status Status que define se um veículo pode ou não ser comprado. Deve receber valores booleanos e deve ser opcional
buyValue Valor de compra do veículo. Deve receber apenas números inteiros
doorsQty Quantidade de portas de um carro. Deve ser maior ou igual a 2 e menor ou igual a 4
seatsQty Quantidade de assentos disponíveis no carro. Deve ser maior ou igual a 2 e menor ou igual a 7
get: /cars/:id
  • Rota para buscar carro pelo id
  • É disparado um erro caso o id não seja string, tenha menos de 24 caracteres ou não exista.
  • retorna status 200 e o carro encontrado em caso de sucesso
put: /cars/:id
  • Rota para atualizar carro pelo id
  • É disparado um erro caso o id não seja string, tenha menos de 24 caracteres ou não exista.
  • retorna status 200 e o carro atualizado
delete: /cars/:id
  • Rota para excluir carro pelo id
  • É disparado um erro caso o id não seja string, tenha menos de 24 caracteres ou não exista.
  • retorna status 204.

About

Api restfull seguindo principios SOLID e POO com mongdodb e typescript

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published