API para gerenciar uma concessionária de veículos.
API em TypeScript na arquitetura MSC, aplicando os pilares de POO e utilizando o ODM Mongoose para se conectar com um banco de dados MongoDB.
Para realizar o projeto, atente-se a cada passo descrito a seguir.
Aqui você vai encontrar os detalhes de como estruturar o desenvolvimento do seu projeto a partir deste repositório.
🐳 Rodando no Docker vs Localmente
ℹ️ Rode os serviços
node
edb
com o comandodocker-compose up -d
.
- Lembre-se de parar o
mongo
se estiver usando localmente na porta padrão (27017
), ou adapte, caso queria fazer uso da aplicação em containers - Esses serviços irão inicializar um container chamado
car_shop
e outro chamadocar_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: Caso opte por utilizar o Docker, TODOS os comandos disponíveis no
package.json
(npm start, npm test, npm run dev, ...) devem ser executados DENTRO do container, ou seja, no terminal que aparece após a execução do comandodocker exec
citado acima.
ℹ️ Instale as dependências com
npm install
⚠ Atenção: Para rodar o projeto desta forma, obrigatoriamente você deve ter o node
instalado em seu computador.
‼ Para rodar o projeto
- Clone o repositório
- Use o comando:
git clone git@github.com:MarcleyRosa/car-shop.git
. - Entre na pasta do repositório que você acabou de clonar:
cd car-shop
- Instale as dependências
npm install
.
├── src/
│ ├── Controllers/
│ ├── Domains/
│ ├── Exceptions/
│ ├── Interfaces/
│ ├── Middlewares/
│ ├── Models/
│ ├── Routes/
│ ├── Services/
│ ├── util/
│ └── ...
├── tests/
│ ├── unit/
| │ ├── Services/
| │ ├── ...
| └── ...
└── ...
- Os atributos necessários para criar um carro estão na tabela:
Atributos | Descrição |
---|---|
id |
String contendo id do veículo |
model |
String contendo modelo do veículo |
year |
Number contendo ano de fabricação do veículo |
color |
String contendo cor principal do veículo |
status |
Booleano contendo status que define se um veículo pode ou não ser comprado (este atributo deve ser opcional e se não passado, deve ser false ) |
buyValue |
Number contendo valor de compra do veículo |
doorsQty |
Number contendo quantidade de portas de um carro |
seatsQty |
Number contendo quantidade de assentos de um carro |
- O corpo da requisição poderá seguir o formato abaixo:
{
"model": "Fiat Uno",
"year": 2002,
"color": "Black",
"status": true,
"buyValue": 12.990,
"doorsQty": 8,
"seatsQty": 6
}