A API construída nesse projeto é um sistema de gerenciamento de vendas no formato dropshipping em que será possível criar, visualizar, deletar e atualizar produtos e vendas. Você deverá utilizar o banco de dados MySQL para a gestão de dados. Além disso, a API deve ser RESTful. API utilizando a arquitetura MSC (model-service-controller)!
Rodando no Docker vs Localmente
1.26.0
por 1.29.2
.
ℹ️ Rode os serviços
node
edb
com o comandodocker-compose up -d
.
- Lembre-se de parar o
mysql
se estiver usando localmente na porta padrão (3306
), ou adapte, caso queria fazer uso da aplicação em containers; - Esses serviços irão inicializar um container chamado
store_manager
e outro chamadostore_manager_db
; - A partir daqui você pode rodar o container
store_manager
via CLI ou abri-lo no VS Code.
ℹ️ Opção 1: Use o comando
docker-compose run node npm test
, ou para acessar o container e executar lá:
ℹ️ Opção 2: Use o comando
docker exec -it store_manager bash
e sigas passos abaixo.
- 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
ℹ️ Instale as dependências com
npm install
-
⚠️ Atenção: Para rodar o projeto desta forma, obrigatoriamente você deve ter oNode.js
instalado em seu computador. -
⚠️ Atenção: A versão doNode.js
eNPM
a ser utilizada é"node": ">=16.0.0"
e"npm": ">=7.0.0"
, como descrito a chaveengines
no arquivopackage.json
. Idealmente deve-se utilizar o Node.js naversão 16.14
, a versão na que esse projeto foi testado.
Antes de começar
- Clone o repositório
-
git clone git@github.com:MarcleyRosa/store-manager.git
; -
Entre na pasta do repositório que você acabou de clonar:
cd store-manager
- Instale as dependências
-
npm install
Execução de testes localmente
ℹ️ IMPORTANTE
- Para poder executar os testes basta executar comando
npm test
(lembre-se de que se estiver usando Docker, rodar esse comando dentro do container)
Para este projeto você pode rodar os testes das seguintes maneiras.
- Executando todos:
npm test
⚠️ Atenção: lembre-se de que se estiver usando Docker, rodar esse comando dentro do container.
Informações importantes sobre o projeto
-
Pode ser utilizado para:
- Adicionar, ler, deletar e atualizar produtos;
- Enviar vendas para o sistema e essas vendas devem validar se o produto em questão existe;
- Ler, deletar e atualizar vendas.
-
Para todos os endpoints:
- Caso o recurso não seja encontrado, aconteça um erro ou haja dados inválidos na requisição, a API retorna o status HTTP adequado com o body
{ message: <mensagem de erro> }
; - Todos os endpoints sempre retornam uma resposta, havendo sucesso nas operações ou não;
- Todos os endpoints sempre retornam os códigos de status corretos de acordo com o typo do error (recurso criado, erro de validação, autorização, etc).
- Verbos HTTP adequados para cada operação;
- Caso o recurso não seja encontrado, aconteça um erro ou haja dados inválidos na requisição, a API retorna o status HTTP adequado com o body
-
Foi utilizado o modelo MSC para que cada camada da API deva estar em seu respectivo diretório:
-
A camada Models no diretório de nome
./src/models
; -
A camada Services no diretório de nome
./src/services
; -
A camada Controllers no diretório de nome
./src/controllers
; -
Os Middlewares no diretório de nome
./src/middlewares
.
Diagrama ER, Entidades e Scripts
O banco terá três tabelas:
- A tabela
products
, com os atributosid
ename
; - A tabela
sales
, com os atributosid
edate
; - A tabela
sales_products
, com os atributossale_id
,product_id
equantity
; - O script de criação do banco de dados pode ser visto aqui;
- O script que popula o banco de dados pode ser visto aqui;
- Criar o banco de dados e gerar as tabelas:
npm run migration
- Limpar e popular o banco de dados:
npm run seed
- Iniciar o servidor Node:
npm start
- Iniciar o servidor Node com nodemon:
npm run debug
- Executar os testes de unidade:
npm run test:mocha