Skip to content

Store Manager é um projeto focado em arquitetar e desenvolver uma API de gerenciamento de vendas com um banco de dados MySQL, utilizando a arquitetura em camadas(MSC/Model, Service, Controller).

Notifications You must be signed in to change notification settings

MilenaSuzumura/project-store-manager

Repository files navigation

Store Manager

Store Manager é um projeto focado em arquitetar e desenvolver uma API de gerenciamento de vendas com um banco de dados MySQL, utilizando a arquitetura em camadas(MSC/Model, Service, Controller).

OBS: ESSE PROJETO FOI DESENVOLVIDO NA TRYBE.

Técnologias usadas

  • JavaScript;
  • Node.js;
  • Express.js;
  • Sequelize.js;
  • Docker;
  • MySQL;
  • DotEnv;
  • Jest;
  • Mock;
  • Sinon;
  • Chai;
  • Chai-http.

Rotas, entradas e saídas

Endpoint GET /products
Utilizado para retornar as informações de todos os produtos que contém no banco de dados.
Exemplo de entrada:
imagem-exemplo-entrada-correta-get-products
Exemplo de saída:
imagem-exemplo-saida-correta-get-products
Endpoint GET /products/:id
Utilizado para retornar as informações do produto com o id correspondente que contém no banco de dados.
Exemplo de entrada:
imagem-exemplo-entrada-correta-get-products-id
Exemplo de saída:
imagem-exemplo-saida-correta-get-products-id

Mensagens de erro

Existe apenas uma mensagem de erro que seria quando o id não corresponde a nenhum produto.

Caso não exista produto com aquele id no banco de dados, o retorno será:
{
  "message": "Product not found"
}
Endpoint POST /products
Utilizado para criar e adicionar um novo produto no banco de dados. O banco de dados exige que o usuário insira somente um nome com, no mínimo, 5 caracters.
Informações necessárias:
  • name: É o nome do produto. Deve ser enviado como string e o mínimo de caracters é 5. É obrigatório.
Exemplo de entrada:
imagem-exemplo-entrada-correta-post-products
Exemplo de saída:
imagem-exemplo-saída-correta-post-products

Mensagens de erro

Existem dois cenários onde a saída acima pode não ser retornada: caso não seja enviado um nome e caso o nome não tenha, pelo menos, 5 caracters.

Retorno para caso falte o nome:
{
  "message": "\"name\" is required"
}
Retorno para caso name tenha menos de 5 caracters:
{
  "message": "\"name\" length must be at least 5 characters long"
}
Endpoint PUT /products/:id
Utilizado para atualizar o nome do produto com o id correspondente. Para isso, é necessário que o usuário insira somente um nome com, no mínimo, 5 caracters.
Informações necessárias:
  • name: É o nome do produto. Deve ser enviado como string e o mínimo de caracters é 5. É obrigatório.
Exemplo de entrada:
imagem-exemplo-entrada-correta-put-products-id
Exemplo de saída:
imagem-exemplo-saída-correta-put-products-id

Mensagens de erro

Existem dois cenários onde a saída acima pode não ser retornada: caso não seja enviado um nome e caso o nome não tenha, pelo menos, 5 caracters.

Retorno para caso falte o nome:
{
  "message": "\"name\" is required"
}
Retorno para caso name tenha menos de 5 caracters:
{
  "message": "\"name\" length must be at least 5 characters long"
}
Endpoint DELETE /products/:id
Utilizado para deletar o produto com o id correspondente.
Exemplo de entrada:
imagem-exemplo-entrada-correta-delete-products-id
Exemplo de saída:
imagem-exemplo-saída-correta-delete-products-id

Mensagens de erro

Existe apenas uma mensagem de erro que seria quando o id não corresponde a nenhum produto.

Caso não exista produto com aquele id no banco de dados, o retorno será:
{
  "message": "Product not found"
}
Endpoint GET /sales
Utilizado para retornar as informações de todas as compras.
Exemplo de entrada:
imagem-exemplo-entrada-correta-get-sales
Exemplo de saída:
imagem-exemplo-saida-correta-get-sales
Endpoint GET /sales/:id
Utilizado para retornar as informações da compra com o id correspondente que contém no banco de dados.
Exemplo de entrada:
imagem-exemplo-entrada-correta-get-sales-id
Exemplo de saída:
imagem-exemplo-saida-correta-get-sales-id

Mensagens de erro

Existe apenas uma mensagem de erro que seria quando o id não corresponde a nenhuma compra.

Caso não exista a compra com aquele id no banco de dados, o retorno será:
{
  "message": "Sale not found"
}
Endpoint POST /sales
Utilizado para criar uma nova compra. Para isso, necessita de array que contém objetos com um id do produto e a quantidade do produto.
Informações necessárias:
  • productId: É o id do produto e deve ser enviado como int. É obrigatório.
  • quantity: É a quantidade do produto. Deve ser enviado como int e o número deve ser acima de 0. É obrigatório.
Exemplo de entrada:
imagem-exemplo-de-entrada-correta-post-sales
Exemplo de saída:
imagem-exemplo-de-saida-correta-post-sales

Inserindo informações incorretas

Existem dois cenários onde a saída acima pode não ser retornada: caso não preencha os requisitos necessários(explicados nas Informações Necessárias acima) e caso falte alguma das informações obrigatórias. Cada um deles terá uma mensagem diferente avisando o motivo de estar incorreta.

Exemplo caso esteja faltando alguma das informações obrigatórias
{
  "message": "\"productId\" is required"
}
Exemplo caso não preencha os requisitos necessários:
{
  "message": "\"quantity\" must be greater than or equal to 1"
}
Endpoint DELETE /sales/:id
Utilizado para deletar as informações da compra com o id correspondente que contém no banco de dados.
Exemplo de entrada:
imagem-exemplo-entrada-correta-delete-sales-id
Exemplo de saída:
imagem-exemplo-saida-correta-delete-sales-id

Mensagens de erro

Existe apenas uma mensagem de erro que seria quando o id não corresponde a nenhuma compra.

Caso não exista a compra com aquele id no banco de dados, o retorno será:
{
  "message": "Sale not found"
}

Utilizando o docker

Para criar os containers, execute: docker-compose up -d

Para abrir o terminar do container, execute: docker exec -it blogs_api bash

Instalando Dependências

npm install

Banco de dados

Para criar o banco de dados, execute: npm run migration

Para popular o banco de dados: npm run seed

Aplicação Node:

Para executar a aplicação e acessar as rotas, execute: npm run debug

Executando Testes

Para rodar todos os testes:

npm test

OBS: Os testes irão rodar com os testes de cobertura

About

Store Manager é um projeto focado em arquitetar e desenvolver uma API de gerenciamento de vendas com um banco de dados MySQL, utilizando a arquitetura em camadas(MSC/Model, Service, Controller).

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published