API desenvolvida em Node.js com Express e banco de dados MySQL, utilizando a biblioteca Sequelize para ORM. Permite o registro de entrada e saída de produtos, atualizando a quantidade total em estoque e registrando tambem as movimentações de produtos.
Foram adicionadas novas funcionalidades à API. Para ter acesso às novidades, utilize o comando "git pull" em seu repositório. Entre as atualizações, destacam-se:
-
Registro de entrada e saída de mercadorias.
-
Inclusão de método e modelo no banco para definir valores máximos e mínimos de produtos no estoque.
OBS: Como não foi criado um arquivo de migração, e este projeto esta em constante aprimoramento. Considere recriar as tabelas usando o comando "node criarBaseDadosTeste.js" , agora com 46 itens.
-
Forçar um estilo de programação (Airbnb).
-
Criar testes unitários.
-
Add ao projeto o Sequelize CLI e adcionar um arquivo de migração.
Esta API foi desenvolvida para atender as especificações do cliente Pedro Marins. Que tem como a demanda de funcionalidades :
- Ter uma lista de produtos com um identificador para cada item.
- Ler a lista de produtos.
- Poder adicionar um item na lista de produtos.
- Poder remover um item da lista de produtos.
- Adicionar quantidade de itens na lista de produtos.
- Poder alterar a quantidade de itens de um produto específico.
- Consultar um item na lista de produtos para saber a quantidade disponível.
- Poder adicionar um limite mínimo e máximo para cada item da lista de produtos.
- Rotina para verificar se alguma quantidade de itens está abaixo do limite mínimo.
- Armazenar cada transação na lista de produtos.
- express
- mysql2
- sequelize
- nodemon (somente para desenvolvimento)
- MySQL
Clone este repositório. Na pasta raiz do projeto, execute o comando npm install para instalar as dependências. Configure as variáveis de ambiente no arquivo config.js com as informações do banco de dados. Execute o comando npm start para rodar a aplicação.
Para configurar corretamente o banco de dados é necessario alterar as variáveis no arquivo src/config/config.js.
const DB = "NomeDoBanco"; // somente letras e numeros
const usuario = "root";
const senha = "123";
Para criar um banco de dados para teste execute o comando "node criarBaseDadosTeste.js" , para criar 46 itens.
A API possui as seguintes rotas:
Cria um novo produto.
Exemplo de requisição:
{
"nome": "Produto A",
"marca": "Marca A",
"qtd": 10,
"min_qtd" : 30,
"max_qtd" : 999
}
* Usando esse método automaticamente registra a quantidade como entrada.
Retorna todos os produtos.
Retorna uma lista de produtos paginados. É possível passar os parâmetros itensPorPagina e pagina para definir a quantidade de itens por página e a página desejada.
Retorna uma lista de produtos filtrados por nome, marca, Passando os parâmetros nome, marca para realizar a busca.
Retorna um produto específico pelo seu ID.
Atualiza um produto existente.
Exemplo de requisição:
{
"nome": "Produto B",
"marca": "Marca B",
"min_qtd" : 30,
"max_qtd" : 999
}
* Quantidade não pode ser atualizada por esta rota.
Deleta um produto existente.
* Usando esse método automaticamente registra toda a quantidade desse item como saída.
Retorna uma lista de produtos com quantidade abaixo do limite mínimo definido no cadastro do produto.
Registra a entrada de um determinado produto no estoque. O parâmetro :id corresponde ao ID do produto que será atualizado. O corpo da requisição deve conter um objeto JSON com as chaves qtd_in (quantidade que será adicionada ao estoque) e data (data e hora da entrada no formato "YYYY-MM-DD HH:mm:ss").
{
"qtd_in" : 30,
"data" : "YYYY-MM-DD HH:mm:ss"
}
Registra a saída de um determinado produto no estoque. O parâmetro :id corresponde ao ID do produto que será atualizado. O corpo da requisição deve conter um objeto JSON com as chaves qtd_out (quantidade que será retirada do estoque) e data (data e hora da saída no formato "YYYY-MM-DD HH:mm:ss").
{
"qtd_in" : 30,
"data" : "YYYY-MM-DD HH:mm:ss"
}
Retorna uma lista de todas as movimentações registradas.
Retorna uma lista de movimentações de um produto específico com base no seu id.
Dentro da pasta Postman Collection está salvo o arquivo JSON usado para testar essa API usando o programa Postman