/Trybe-Project-25-store-manager

Projeto de uma API RESTful de gerenciamento de vendas no formato dropshipping utilizando arquitetura MSC

Primary LanguageJavaScript

Store Manager 🏬

📄 Sobre:

Projeto desenvolvido durante o módulo de back-end do curso de desenvolvimento web da Trybe.

Neste projeto foi desenvolvida uma API RESTful de gerenciamento de vendas no formato dropshipping. Dentro da API é possível criar, visualizar, deletar e atualizar os produtos e as vendas.

Para está aplicação foi utilizado um banco de dados MySQL.

A API foi criada utilizando arquitetura MSC (model-service-controller).

Foram desenvolvidos testes unitários para a aplicação utilizando as ferramentas Mocha, Chai e Sinon.


Desempenho Aprovado com 100% de desempenho em todos os requisitos
Requisitos
Requisitos obrigatórios:
  1. Crie endpoints para listar produtos
  2. Desenvolva testes que cubram no mínimo 5% das camadas da sua aplicação
  3. Crie endpoint para cadastrar produtos
  4. Crie validações para produtos
  5. Desenvolva testes que cubram no mínimo 10% das camadas da sua aplicação
  6. Crie endpoint para validar e cadastrar vendas
  7. Desenvolva testes que cubram no mínimo 15% das camadas da sua aplicação
  8. Crie endpoints para listar vendas
  9. Desenvolva testes que cubram no mínimo 20% das camadas da sua aplicação
  10. Crie endpoint para atualizar um produto
  11. Desenvolva testes que cubram no mínimo 25% das camadas da sua aplicação
  12. Crie endpoint para deletar um produto

Requisitos bônus:

  1. Desenvolva testes que cubram no mínimo 30% das camadas da sua aplicação
  2. Crie endpoint para deletar uma venda
  3. Desenvolva testes que cubram no mínimo 35% das camadas da sua aplicação
  4. Crie endpoint para atualizar uma venda
  5. Desenvolva testes que cubram no mínimo 40% das camadas da sua aplicação
  6. Crie endpoint products/search?q=searchTerm
  7. Desenvolva testes que cubram no mínimo 50% das camadas da sua aplicação
  8. Desenvolva testes que cubram no mínimo 60% das camadas da sua aplicação
Diagrama Entidade-Relacionamento

image


↪️ Rotas:

Products:

GET /products

Lista todos os produtos cadastrados no banco de dados

  • Se bem-sucedido, retorna status 200 e um array com todos os produtos cadastrados
GET /products/:id

Lista apenas o produto correspondente ao id da rota

  • Se bem-sucedido, retorna status 200 e um objeto contendo as informações do produto
GET /products/search?q=searchTerm

Lista todos os produtos que possuem em seu nome o termo passado na rota

  • Se bem-sucedido, retorna status 200 e um array contendo os produtos que correspondem a busca
  • Se o termo de busca for vazio, retorna status 200 e um array contendo todos os produtos cadastrados
POST /products

Cadastra um novo produto no banco de dados

  • Se bem-sucedido, retorna status 201 e um objeto contendo os dados do novo produto
PUT /products/:id

Altera as informações de um produto cadastrado no banco de dados

  • Se bem-sucedido, retorna status 200 e um objeto contendo os dados atualizados do produto
DELETE /products/:id

Remove um produto cadastrado do banco de dados

  • Se bem-sucedido, retorna apenas o status 204

Sales:

GET /sales

Lista todas as vendas cadastradas no banco de dados

  • Se bem-sucedido, retorna status 200 e um array com todas as vendas cadastradas
GET /sales/:id

Lista apenas a venda correspondente ao id da rota

  • Se bem-sucedido, retorna status 200 e um array contendo as informações da venda
POST /sales

Cadastra uma nova venda no banco de dados

  • Se bem-sucedido, retorna status 201 e um objeto contendo o id da venda e um array com as informações dos produtos vendidos
PUT /sales/:id

Altera as informações de uma venda cadastrada no banco de dados

  • Se bem-sucedido, retorna status 200 e um objeto contendo o id da venda e um array com as informações atualizadas dos produtos vendidos
DELETE /sales/:id

Remove uma venda cadastrada no banco de dados

  • Se bem-sucedido, retorna apenas um status 204

🤹🏽 Habilidades Desenvolvidas:

  • Criar uma aplicação utilizando Express.js
  • Criar uma API RESTful utilizando arquitetura MSC (Model-Service-Controller)
  • Validar dados das requisições utilizando a biblioteca Joi
  • Implementar testes unitários utilizando as ferramentas Mocha, Chai e Sinon

🧰 Ferramentas:

  • JavaScript
  • Node.js
    • Express.js
  • DotEnv
  • Joi
  • MySQL
  • Mocha.js
  • Chai.js
  • Sinon.js
  • Docker

📝 Desenvolvido por: