/car-shop

REST API that exposes a CRUD system for a carshop. Project developed at Trybe using NodeJS, MongoDB and Docker.

Primary LanguageTypeScript

Este repositório contém projeto de uma API em NodeJS utilizando TypeScript e POO!

Projeto para estudos sobre composição e herança.


Nessa aplicação CRUD que simula o sistema de uma concessionária de veículos, é possível:

    - cadastrar um novo veículo
    - consultar por todos os veículos ou apenas um veículo específico
    - atualizar informações sobre um veículo específico
    - deletar um veículo específico

Rotas:

post/cars

Cria novo veículo
corpo da requisição deve conter JSON com seguinte formato:
    {
       model: "Nome do modelo do veículo",
       year: "Ano de fabricação",
       color: "cord",
       buyValue: "valor de venda",
       seatsQty: quantidade de assentos(não pode ser menor que 2),
       doorsQty: quantidade de portas(não pode ser menor que 2)
     }

Em caso de sucesso retorna os dados inseridos junto do id da inserção e HTTP status code 200.

get/cars

Consulta por todos os veículos
retorna array de veículos
    [
     {
       model: "Nome do modelo do veículo",
       year: "Ano de fabricação",
       color: "cord",
       buyValue: "valor de venda",
       seatsQty: quantidade de assentos,
       doorsQty: quantidade de portas
     },
     {
       model: "Nome do modelo do veículo",
       year: "Ano de fabricação",
       color: "cord",
       buyValue: "valor de venda",
       seatsQty: quantidade de assentos,
       doorsQty: quantidade de portas
     }
    ]

Em caso de sucesso retorna HTTP status code 200.

get/cars/:id

Consulta por veículo pelo ID
retorna informações do veículo
    [
     {
       model: "Nome do modelo do veículo",
       year: "Ano de fabricação",
       color: "cord",
       buyValue: "valor de venda",
       seatsQty: quantidade de assentos,
       doorsQty: quantidade de portas
     }
    ]

Em caso de com sucesso retorna HTTP status code 200.
Em caso de não houver veículo com o Id informado retorna HTTP status code 404.

put/cars/:id

Atualiza informações de um veículo pelo ID
o corpo da requisição deve conter um objeto JSON com a informação válida a ser atualizada
     {
       campo_a_ser_atualizado: "valor"
     }

Se atualizado com sucesso retorna HTTP status code 200.
Em caso de não houver veículo com o Id informado retorna HTTP status code 404.
Em caso de erro retorna HTTP status code 400.

delete/cars/:id

Deleta um veículo pelo ID
Um Id válido deve ser passado por parametro na URL

Se deletado com sucesso retorna HTTP status code 204.
Em caso de erro retorna HTTP status code 404.

Como rodar o projeto

🐳 Rodando no Docker vs Localmente

Docker

Rode os serviços node e mongodb com o comando docker-compose up -d.

  • Lembre-se de parar o serviço local mongo, caso você possua e estiver usando na porta padrão (27017), ou troque a porta do mongono arquivo docker-compose, caso queria fazer uso da aplicação em containers
  • Esses serviços irão inicializar um container chamado car_shop e outro chamado car_shop_db.
  • A partir daqui você pode rodar o container car_shop 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

⚠ Atenção ⚠ TODOS os comandos de scripts disponíveis no package.json devem ser executados dentro do container, ou seja, no terminal que aparece após a execução do comando docker exec citado acima.

Localmente

  • Instale as dependências com npm install