/api-pmweb

Teste para Node.Js Developer Construção de uma API que deverá receber como parâmetro as datas de início e fim do período de consulta. Retornando um Json com resumo do que há no banco.

Primary LanguageTypeScript

Project logo

API - Orders

Status


Objetivo do projeto: Avaliar a capacidade técnica, crítica e raciocínio lógico, na construção de uma API para acesso a uma camada de dados.

📝 Indice

🧐 Sobre

Teste para Node.Js Developer Construção de uma API que deverá receber como parâmetro as datas de início e fim do período de consulta. Retornando um Json com resumo do que há no banco.

🏁 Primeiros passos

Pre-requisitos

Banco de dados PostGres.

Yarn instalado na maquina que irá rodar o projeto.

Criação de arquivo .env contendo as váriaveis de ambiente que são necessárias neste projeto.

.env

Variável Descrição
DATABASE_HOSTNAME Hostname para conexão com o banco de dados
DATABASE_USERNAME Usuario de acesso ao banco de dados
DATABASE_PASSWORD Senha de acesso ao banco de dados
DATABASE_DATABASE Nome do banco de dados

Instalando

Iniciar instalação de pacotes necessários com yarn:

yarn

Executar serviço API:

yarn dev

Se tudo ocorreu bem, após ter criado o .env e configurado corretamente o banco de dados, após executar o comando acima, deverá obter a seguinte mensagem no terminal:

Server started on port 3333! 🏆 GET http://localhost:3333

Indicando que o servidor está rodando em localhost na porta 3333

🎈 Como usar

Endpoint

<url>/orders

Método: GET

Body:

{
  "startDate": "2015-12-30",
  "endDate": "2016-12-30"
}

Retorno esperado:

{
  "success": true,
  "data": {
    "result": {
      "count": 3887,
      "revenue": 411890.04,
      "quantity": 7198,
      "averageRetailPrice": 57.22,
      "averageOrderValue": 105.97
    }
  }
}
Propriedade Descrição
count Total de pedidos efetuados no período.
revenue Receita total de pedidos efetuados no período.
quantity Total de produtos vendidos no período (soma de quantidades).
averageRetailPrice Preço médio de venda (receita / quantidade de produtos).
averageOrderValue Ticket médio de venda (receita / total de pedidos).

⛏️ Built Using

✍️ Autor