/challenge-bravo

Desafio de back-end

Primary LanguageGo

Logo Hurb Desafio Bravo

Made with go lang GitHub language count Repository size License

💻 Descrição

Desenvolvimento de uma API que realiza conversão monetária de diferentes moedas com cotações de verdade e atuais.

🚀 Como rodar a aplicação

Pré-requisitos

Antes de começar, você vai precisar ter instalado em sua máquina as seguintes ferramentas: Git, Docker, Docker Compose

Configurando com o docker

# Clone este repositório
$ git clone https://github.com/gustavowiller/challenge-bravo.git

# Acesse a pasta do projeto no terminal/cmd
$ cd challenge-bravo

# Comando para copiar o arquivo template de configuração de variaveis de ambiente
$ cp .env-example .env

# Comando para iniciar os containers da api através do docker-compose
$ docker-compose up -d

# Por padrão o servidor iniciará na porta :8080

🛠 Tecnologias

As principais ferramentas utilizadas no desenvolvimento:

As bibliotecas externas do ecossistema de Go, que auxiliaram no desenvolvimento:

📖 Documentação API

Cria uma nova moeda

Http Request POST /currency

Parâmetros Body:

{
  "Code": string,
  "IsReal": boolean,
  "ExchangeRate": float64
}

Descrição dos parâmetros:

  • Code Representa o código monetário da moeda. Ex: BTC, BRL, USD
  • IsReal Valor booleano para representar se a moeda é de cotação verdadeira ou ficticia.
  • ExchangeRate Taxa de conversão de acordo com a moeda de lastro informada na aplicação.

Respostas HTTP Code: 400 / Contém a descrição do erro devido aos parâmetros de request.
{
  "error": string
}

HTTP Code: 201 Contém os dados de inserção da nova moeda

{
  "Code": string,
  "IsReal": boolean,
  "ExchangeRate": float64
}

Exclui uma moeda

Http Request DELETE /currency/{code}

Descrição dos parâmetros:

  • Code Representa o código monetário da moeda. Ex: BTC, BRL, USD

Respostas:
HTTP Code: 400 / Contém a descrição do erro devido aos parâmetros de request.
{
  "error": string
}

HTTP Code: 204 / Representa o sucesso da operação de exclusão de moeda.

{}

Realiza uma conversão monetária

Http Request GET /currency/convert/:from:/:to:/:amount:

Descrição dos parâmetros:

  • :from: Representa o código monetário da moeda de origem para realizar a conversão. Tipo: string
  • :to: Representa o código monetário da moeda de destino para realizar a conversão. Tipo: string
  • amount Representa a quantidade monetária a ser convertida. Tipo: float64

Respostas HTTP Code: 400 / Contém a descrição do erro devido aos parâmetros de request.

{
  "error": string
}

HTTP Code: 200 / Retorna o resultado da operação de conversão monetária

{
  "Result": float64
}

⏭️ Próximos Passos

  • Refatorar código para possibilitar mockar acesso a banco de dados e requisições http.
  • Adicionar testes unitários para a camada de services
  • Garantir que a Api suporte um volume de requisições maior com o uso de banco de dados em memória
  • Retornar mensagem de erro descritiva para tentativa de inserção de registro duplicado.
  • Realizar tratativas para o caso de reinserção de uma moeda excluída.
  • Fornecer documentação detalhada da api com o swagger.