Skip to content

Latest commit

 

History

History
186 lines (142 loc) · 4.47 KB

README.md

File metadata and controls

186 lines (142 loc) · 4.47 KB

Stock quote manager

Neste microserviço é possível criar, alterar e visualizar estoques de quotações.

Pré-requisitos

Antes de começar, é preciso ter instalado em sua máquina as seguintes ferramentas: Java 11 (Java version: 11.0.11), Maven (Apache Maven 3.8.1) e Docker 3.3.1. O código foi produzido utilizando o Eclipse.

🎲 Rodando o Back End (servidor)

  • Clone este repositório
  • Importe o arquivo Maven para a sua IDE
  • Espera-se um servidor MYSQL na porta 3305 e um BD chamado bootdb
  • Você pode criar esse servidor MYSQL usando Docker, com o comando: docker container run -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=bootdb -p 3305:3306 -p 33061:33060 -d mysql:8
  • Após isso você pode rodar o StockQuoteManagerApplication. A API estará disponível na porta 8080.

Entidade

A entidade Stock contém um id (String) e um Mapa em que a chave é uma data e o valor um preço. O objetivo é armazenar as quotações para ações.

Formato das Requisições

O formato esperado de um stock é o seguinte:

  {
  "id": "petr3",
  "quotes":
    {
    "2019-01-01" : "10",
    "2019-01-02" : "11",
    "2019-01-03" : "14"
    }
}

Durante a criação e alteração, os campos id é obrigatório.

Endpoints

O microserviço possui os seguintes endpoints para operação do estoque de quotações:

Verbo HTTP Resource path Descrição
GET /stock Lista todo o stock de quotações
GET /stock/{id} Busca por um stock pelo ID
POST /stock Salva um stock
POST /stock/newquotation Insere uma quotação no stock

GET /stock

Esse endpoint retorna todos os stocks cadastrados.

Retorno:

  {
    "id": "petr3",
    "quotes":
      {
        "2019-01-01" : "6.8",
        "2019-01-02" : "9.6"    
      }
  }

  {
    "id": "petr4",
    "quotes":
      {
        "2019-01-01" : "10",
        "2019-01-02" : "44"    
      }
  }

Em caso de algum erro de validação, a API retorna um HTTP 400 indicando uma requisição inválida.

GET /stock{id}

Esse endpoint retorna todos o stock com o id fornecido.

Retorno:

  {
    "id": "petr3",
    "quotes":
      {
        "2019-01-01" : "6.8",
        "2019-01-02" : "9.6"    
      }
  }  

Se o id fornecido não estiver cadastrado, a API retorna 404 Not Found.

POST /stock

Esse endpoint salva um stock. O stock precisa conter obrigatoriamente o id, mas não precisa conter quotations. Se não existir quotações, retorna uma lista vazia, conforme mostrado no exemplo 1.

Entrada possível 1:

    {
    "id": "petr3",
    "quotes":
      {
            
      }
  }  
  

Retorno da entrada possível 1:

  {
      "id": "petr",
      "quotes": {}
  }

Entrada possível 2:

  {
    {
    "id": "petr3",
    "quotes":
      {
        "2019-01-01" : "6.8",
        "2019-01-02" : "9.6"  
      }
    }  
  }

Retorno da entrada possível 2:

  {
      "id": "petr",
      "quotes": 
        { 
        "2019-01-01" : "6.8",
        "2019-01-02" : "9.6"  
        }
  }

Se a inserção do stock ocorrer, a API retorna 201 Created e retorna o JSON do stock recém criado.

POST /stock/newquotation

Esse endpoint recebe o id, preço e data e insere essa quotação no stock com o id fornecido.

Exemplo: stock/newquotation?id=petr&date=2019-01-03&price=10

No exemplo anterior, será adicionada a quotação do dia 2019-01-03 com o preço 10 no stock com id petr.

Query param Significado
id Id do stock que irá armazenar essa quotação
date data da quotação
price preço oda quotação

Stock com id petr antes da inclusão:

  {
    "id": "petr",
    "quotes": {
        
    }
}

Retorno após a inclusão:

  {
    "id": "petr",
    "quotes": {
        "2019-01-03": 10
    }
}

Se a inserção da quotação ocorrer, a API retorna 200 OK e o JSON do stock recém modificado, conforme mostrado anteriormente. Se o id não estiver cadastrado, a API retorna 404 Not Found.

Importante: Se o stock já tiver uma quotação para a data especificada, o preço será sobreescrito