/store-manager

Sistema de gerenciamento de vendas no formato dropshipping em que será possível criar, visualizar, deletar e atualizar produtos e vendas

Primary LanguageJavaScript

Boas-vindas ao repositório do Projeto Store Manager!

Sobre o Projeto

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)!

Orientações

Rodando no Docker vs Localmente

Com Docker

⚠️ Antes de começar, seu docker-compose precisa estar na versão 1.29 ou superior. Veja aqui ou na documentação como instalá-lo. No primeiro artigo, você pode substituir onde está com 1.26.0 por 1.29.2.

ℹ️ Rode os serviços node e db com o comando docker-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 chamado store_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


Sem Docker

ℹ️ Instale as dependências com npm install

  • ⚠️ Atenção: Para rodar o projeto desta forma, obrigatoriamente você deve ter o Node.js instalado em seu computador.

  • ⚠️ Atenção: A versão do Node.js e NPM a ser utilizada é "node": ">=16.0.0" e "npm": ">=7.0.0", como descrito a chave engines no arquivo package.json. Idealmente deve-se utilizar o Node.js na versão 16.14, a versão na que esse projeto foi testado.


Antes de começar
  1. 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
  1. 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;
  • 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

Diagrama de Entidade-Relacionamento


Tabelas

O banco terá três tabelas:

  • A tabela products, com os atributos id e name;
  • A tabela sales, com os atributos id e date;
  • A tabela sales_products, com os atributos sale_id, product_id e quantity;
  • 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;

Dicas de scripts prontos

  • 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