Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Descrição da API
API para conversão de moedas onde é possível realiza a conversão entre as moedas previamentes cadastradas.
Existe um cronjob para manter as taxas de conversões atualizadas das principais moedas como Dolar (USD), Euro (EUR), Real (BRL), etc desde que a moeda esteja cadastrada no sistema.
No cadastro da Moeda contém a data de referencia da taxa de cambio utilizada para conversão isso ajuda o usuário a saber se a taxa está atualizada, principalmente para os casos de moedas que não são atualizadas automaticamente.
A Modeda utilizada como lastro é o Dolar (USD).
É possível realizar todas as operações de CRUD de Moedas e realizar a Conversão.
A documentação dos endpoints estão disponíveis na própria API "/docs".
Etapas para poder executar a API na máquina local
Obs: Os comandos a seguir devem ser executados na pasta raiz do projeto.
Subir os serviços de banco de dados e de cache utilizados pela API
ou
Executar a API
Direto na máquina local
ou
Dentro do Docker
Endpoint da API localhost:9000
Endpoin da documentação da API localhost:9000/docs
Informações sobre a atualização automatica das taxas de cambio
Encontrei um endpoint publico para obter as taxas de cambio do Banco Central Europeu. link
Esse endpoint tem como lastro a moeda Euro (EUR) onde fiz um de/para no código para tornar o Dolar (USD) a moeda de lastro.
Optei por usar esse endpoint pela veracidade da informação por ser do Banco Central da Europa e também porque não encontrei facilmente um endpoint publico para obter a taxa de cambio em dolar, então preferi utilizar o tempo para implementar mais recursos na API que na minha visão acredito fazer mais sentido para vcs avaliarem a minha maturidade em desenvolvimento.
Descrição Técnica
Geração da Documentação da API - Swagger
Instalar na máquina o go-swagger
Especificação das tags para geração automatica da documentação aqui
Executar o comando abaixo na pasta raiz da API para atualizar a documentação
Sugestões de Melhorias
Restringir acesso aos endpoints de CRUD de Moedas para evitar alteração indevida
Incluir na documentação da API a relação dos erros que podem ser retornado
Refatorar as validações de erros.
Criar paginação no endpoint que lista todas as Moedas
Substituir ID sequencial por UUID
Incluir cabeçalhos HTTP de segurança
Incluir controle de auditoria
Atualização assincrona das moedas através do cronjob
Obs: Com certeza tem mais melhorias a ser feita tanto no código quanto na documentação. Melhoria continua deve fazer parte da vida útil de toda aplicação.
Espero que gostem bastante do projeto que entreguei ;)