Projeto LeaderBoard
Habilidades
O CarShop
é uma API contruída com princípios de POO seguindo um CRUD, feita para gerenciar uma concessionária de veículos utilizando o banco de dados MongoDB.
Habilidades
Neste projeto, o objetivo era:
- Exercitar o conhecimento dos pilares da
Programação Orientada a Objetos
:Herança
,Abstração
,Encapsulamento
ePolimorfismo
; - Exercitar a utilização de
Composição
; - Exercitar a criação e utilização de
Interfaces
; - Implementar, em
TypeScript
:Classes
,Instâncias
,Atributos
,Métodos
eObjetos
; - Aplicar os conhecimentos de
MongoDB
,Typescript
ePOO
para criar uma API comCRUD
.
Ferramentas usadas 🧰
🔨 Este projeto foi feito uma aplicação dockerizada em Node.js + Typescript
usando o mongoDB
Instruções
Para adicionar uma partida é necessário usuário e senha, portanto a pessoa deverá estar logada para fazer as alterações. Teremos um relacionamento entre as tabelas clubs
e matchs
para fazermos as atualizações das partidas.
- Clone o repositório
git clone git@github.com:luanamonero/project-car-shop
.- Entre na pasta do repositório que você acabou de clonar:
cd project-car-shop
- Instale as dependências
npm install
Rotas do Backend
/cars
)
Endpoint (POST
A rota do tipo - O body da requisição deve conterá o seguinte formato:
{ model: "Ferrari Maranello", year: 1963, color: "red", buyValue: 3500000, seatsQty: 2, doorsQty: 2 }
- Saídas
- Sua API deve responder com status http
201
e o seguinte body:
- Sua API deve responder com status http
_id: "4edd40c86762e0fb12000003",
model: "Ferrari Maranello",
year: 1963,
color: "red",
buyValue: 3500000,
seatsQty: 2,
doorsQty: 2
- A rota retorna erro
400
caso a requisição receba um objeto vazio; - A rota retorna erro
400
ao tentar criar um carro com quantidade de assentos inferior a 2; - A rota retorna erro
400
ao tentar criar um carro com quantidade de portas inferior a 2; - A rota retorna erro
400
ao tentar criar um carro semmodel
,year
,color
,status
ebuyValue
; - A rota retorna erro
400
ao tentar criar um carro semdoorsQty
eseatsQty
; - Não é possível criar um carro se os atributos estiverem com tipos errados;
GET
A rota do tipo - Saídas
- Sua API deve responder com status http
200
e o seguinte body:
- Sua API deve responder com status http
[{
_id: "4edd40c86762e0fb12000003",
model: "Ferrari Maranello",
year: 1963,
color: "red",
buyValue: 3500000,
seatsQty: 2,
doorsQty: 2
}]
/cars/:id
)
Endpoint (GET
A rota do tipo - Saídas
- Sua API deve responder com status http
200
e o seguinte body:
- Sua API deve responder com status http
_id: "4edd40c86762e0fb12000003",
model: "Ferrari Maranello",
year: 1963,
color: "red",
buyValue: 3500000,
seatsQty: 2,
doorsQty: 2
- É possível listar um carro com sucesso através do id;
- É disparado o erro
400
Id must have 24 hexadecimal characters
caso o id possua menos que 24 caracteres; - É disparado o erro
404
Object not found
caso o id possua 24 caracteres mas é inválido;
PUT
A rota do tipo - Saídas
- Sua API deve responder com status http
200
e o seguinte body:
- Sua API deve responder com status http
{
_id: "4edd40c86762e0fb12000003",
model: "Fiat Uno",
year: 1963,
color: "blue",
buyValue: 3500,
seatsQty: 4,
doorsQty: 4
}
- É disparado o erro
404
Object not found
caso o id possua 24 caracteres mas é inválido; - É disparado o erro
400
Id must have 24 hexadecimal characters
caso o id possua menos que 24 caracteres; - É disparado o erro
400
caso obody
esteja incompleto; - Será verificado que um carro é atualizado com sucesso;
DELETE
A rota do tipo - Saídas
- Sua API deve responder com status http
204
e o seguinte body:
- Sua API deve responder com status http
{
_id: "4edd40c86762e0fb12000003",
model: "Fiat Uno",
year: 1963,
color: "blue",
buyValue: 3500,
seatsQty: 4,
doorsQty: 4
}
- É disparado o erro
404
Object not found
caso o id possua 24 caracteres mas é inválido; - É disparado o erro
400
Id must have 24 hexadecimal characters
caso o id possua menos que 24 caracteres; - Será verificado que um carro é removido com sucesso;
- Sua API deve responder com status http
204
sem body;
/motorcycles
)
Endpoint (POST
A rota do tipo - O body da requisição deve conterá o seguinte formato:
model: "Honda CG Titan 125",
year: 1963,
color: "red",
buyValue: 3500,
category: "Street",
engineCapacity: 125
- Saídas
- Sua API deve responder com status http
201
e o seguinte body:
- Sua API deve responder com status http
_id: "4edd40c86762e0fb12000003",
model: "Honda CG Titan 125",
year: 1963,
color: "red",
buyValue: 3500,
category: "Street",
engineCapacity: 125
sQty: 2
A rota retorna erro 400
caso a requisição receba um objeto vazio;
- A rota retorna erro
400
ao tentar criar uma moto comcategory
diferente deStreet
,Custom
ouTrail
; - A rota retorna erro
400
ao tentar criar uma moto comcategory
diferente destring
; - A rota retorna erro
400
ao tentar criar uma moto comengineCapacity
menor ou igual a zero; - A rota retorna erro
400
ao tentar criar uma moto comengineCapacity
maior que 2500; - A rota retorna erro
400
ao tentar criar um moto semmodel
,year
,color
ebuyValue
; - A rota retorna erro
400
ao tentar criar um moto semcategory
eengineCapacity
; - Não é possível criar uma moto se os atributos estiverem com tipos errados;
- É possível criar uma moto se todos os parametros forem passados corretamente;
GET
A rota do tipo - Saídas
- Sua API deve responder com status http
200
e o seguinte body:
- Sua API deve responder com status http
[{
_id: "4edd40c86762e0fb12000003",
model: "Honda CG Titan 125",
year: 1963,
color: "red",
buyValue: 3500,
category: "Street",
engineCapacity: 125
sQty: 2
}]
/motocycle/:id
)
Endpoint (GET
A rota do tipo - Saídas
- Sua API deve responder com status http
200
e o seguinte body:
- Sua API deve responder com status http
_id: "4edd40c86762e0fb12000003",
model: "Ferrari Maranello",
year: 1963,
color: "red",
buyValue: 3500000,
seatsQty: 2,
doorsQty: 2
- É possível listar uma moto com sucesso através do id;
- É disparado o erro
400
Id must have 24 hexadecimal characters
caso o id possua menos que 24 caracteres; - É disparado o erro
404
Object not found
caso o id possua 24 caracteres mas é inválido;
PUT
A rota do tipo - Saídas
- Sua API deve responder com status http
200
e o seguinte body:
- Sua API deve responder com status http
{
_id: "4edd40c86762e0fb12000003",
model: "Ferrari Maranello",
year: 1963,
color: "red",
buyValue: 3500000,
seatsQty: 2,
doorsQty: 2
}
- É disparado o erro
404
Object not found
caso o id possua 24 caracteres mas é inválido; - É disparado o erro
400
Id must have 24 hexadecimal characters
caso o id possua menos que 24 caracteres; - É disparado o erro
400
caso obody
esteja incompleto; - Será verificado que uma moto é atualizada com sucesso;
- Sua API deve responder com status http
200
e o seguinte body:
DELETE
A rota do tipo - Saídas
- Sua API deve responder com status http
204
e o seguinte body:
- Sua API deve responder com status http
{
_id: "4edd40c86762e0fb12000003",
model: "Honda CG Titan 125",
year: 1963,
color: "black",
buyValue: 3500,
category: "Street",
engineCapacity: 125
}
- É disparado o erro
404
Object not found
caso o id possua 24 caracteres mas é inválido; - É disparado o erro
400
Id must have 24 hexadecimal characters
caso o id possua menos que 24 caracteres; - Será verificado que uma moto é removida com sucesso;
- Sua API deve responder com status http
204
sem body;