API RESTful de um sistema de gerenciamento de vendas. Projeto desenvolvido durante o curso de formação Full-Stack da Trybe.
O Projeto Store Manager foi desenvolvido durante o curso de formação full-stack pela Trybe.
A aplicação consiste em uma API RESTful de um sistema de gerenciamento de vendas, no qual é possível criar, visualizar, deletar e atualizar produtos e vendas. A API utiliza arquitetura em camadas e um banco de dados MySQL para a gestão de dados, possuindo também testes para garantir as funcionalidade das implementações.
# Após clonar o repositório:
# Instale as dependências
npm install
# Inicie os containers do compose `backend` e `db`
# A aplicação estará disponível em `http://localhost:3001` em modo de desenvolvimento
docker-compose up -d
# É possível ver os logs da aplicação com `docker logs -n 10 -f <nome-do-container>`
docker logs -n 10 -f store_manager
#### Comandos dos testes com mocha
npm run test:mocha # roda os testes do mocha
npm run test:coverage # roda os testes e mostra a cobertura geral
npm run test:mutation # roda os testes e mostra a cobertura de mutações
A modelagem do banco de dados respeita o seguinte diagrama de entidade-relacionamento:
GET /products
: retorna todos os produtos;GET /products/:id
: retorna apenas o produto com o id
presente na URL;id
;GET /sales
: retorna todas as vendas;GET /sales/:id
: retorna apenas a venda o id
presente na URL;saleId
, em caso de empate, ordena também de forma crescente pelo campo productId
;POST /products
: Os produtos enviados na requisição são salvos na tabela products
do banco de dados;POST /sales
: As vendas enviadas na requisição são salvas nas tabelas sales
e sales_products
do banco de dados;PUT /products/:id
: O produto com id
presente na URL é atualizado;PUT /sales/:saleId/products/:productId/quantity
: A quantidade quantity
do produto vendido com o productId
presente na URL é atualizada;GET /products/search
: Traz todos os produtos no banco de dados contendo o valor da query q
em name
, se existirem;q
esteja vazia;DELETE /products/:id
: O produto com id
presente na URL é deletado;DELETE /sales/:id
: A venda com id
presente na URL é deletada;