Desafio Bravo
💻 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, USDIsReal
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.