https://github.com/tagliatti/challenge-bravo
Solução para o desafio Challenge Bravo da Hurb, desenvolvido em Go com SQLite
https://github.com/tagliatti/challenge-bravo
go golang sqlite
Last synced: about 1 month ago
JSON representation
Solução para o desafio Challenge Bravo da Hurb, desenvolvido em Go com SQLite
- Host: GitHub
- URL: https://github.com/tagliatti/challenge-bravo
- Owner: Tagliatti
- Created: 2024-12-19T16:37:24.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2025-03-18T02:02:30.000Z (over 1 year ago)
- Last Synced: 2025-10-22T11:43:18.884Z (8 months ago)
- Topics: go, golang, sqlite
- Language: Go
- Homepage:
- Size: 30.3 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Challenge Bravo
## Descrição
Solução para o desafio [Challenge Bravo da Hurb](./CHALLENGE.md), desenvolvido em Go com SQLite. O projeto conta com testes de integração, migrações aplicadas ao iniciar a aplicação e uso de Docker.
O projeto permite converter valores monetários de moedas reais e fictícias em tempo real. Por padrão, há suporte para USD, BRL, EUR, BTC e ETH, mas é possível cadastrar mais moedas. Para moedas fictícias, é necessário informar o valor da taxa (Rate) em relação ao USD, que é a moeda padrão do projeto.
## Requisitos
- [Docker](https://www.docker.com/)
- [Docker Compose](https://docs.docker.com/compose/)
- [Git](https://git-scm.com/)
## Setup
1. Clone o repositório
2. Entre na pasta do projeto
3. Execute o projeto
```bash
docker-compose up -d
```
> Se você estiver executando pela primeira vez o container pode demorar um pouco para subir. Execute `docker-compose logs -f` para acompanhar o processo.
## Testes
Para rodar os testes, execute o comando:
```bash
docker-compose run --rm api go test ./...
```
Para rodar os testes com cobertura de código, execute o comando:
```bash
docker-compose run --rm api go test -coverprofile=coverage.out ./...
```
## Endpoints
### `GET /health`
Endpoint de healthcheck
```bash
curl "http://localhost:8080/health
```
### `GET /from={symbol}&to={symbol}&amount={number}`
Converte o valor de uma moeda para outra
```bash
curl "http://localhost:8080?from=USD&to=EUR&amount=1.234"
```
### `POST /`
Cria uma nova moeda
```bash
curl -X POST -d '{"symbol":"GTA", "rate": 1}' "http://localhost:8080"
```
### `PUT /{symbol}`
Atualiza o rate de uma moeda
```bash
curl -X PUT -d '{"rate": 0}' "http://localhost:8080/GTA"
```
### `DELETE /{symbol}`
Excluir uma moeda
```bash
curl -X DELETE "localhost:8080/GTA"
```