Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/kauefraga/esquilo-aniquilador
🐿 Minha API aniquiladora pra Rinha de Backend em Go. Segunda edição da Rinha!
https://github.com/kauefraga/esquilo-aniquilador
api golang nginx postgresql rinha-backend rinha-de-backend
Last synced: about 2 months ago
JSON representation
🐿 Minha API aniquiladora pra Rinha de Backend em Go. Segunda edição da Rinha!
- Host: GitHub
- URL: https://github.com/kauefraga/esquilo-aniquilador
- Owner: kauefraga
- License: mit
- Created: 2024-02-12T15:53:10.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2024-03-10T22:50:28.000Z (10 months ago)
- Last Synced: 2024-06-21T14:06:08.554Z (7 months ago)
- Topics: api, golang, nginx, postgresql, rinha-backend, rinha-de-backend
- Language: Go
- Homepage:
- Size: 159 KB
- Stars: 8
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Esquilo Aniquilador
![GitHub top language](https://img.shields.io/github/languages/top/kauefraga/esquilo-aniquilador)
![Rinha de Backend](https://img.shields.io/badge/Rinha_de-Backend-8A2BE2)
![GitHub's license](https://img.shields.io/github/license/kauefraga/esquilo-aniquilador)
![GitHub last commit (branch)](https://img.shields.io/github/last-commit/kauefraga/esquilo-aniquilador/main)> 🐿 Minha API aniquiladora pra segunda edição da Rinha de Backend em Go. A Rinha de Backend é uma competição muito divertida e, para mim, toda edição é/será de muito aprendizado. Participa aí!
> [!TIP]
> Veja [o repositório da Rinha](https://github.com/zanfranceschi/rinha-de-backend-2024-q1). O prazo final é 10/03/2024.## 🗺 O que foi implementado
Inicialmente:
- [x] Rota `POST /clientes/:id/transacoes` com banco de dados em memória (para testes e validação das regras de negócio)
- [x] Rota `GET /clientes/:id/extrato` com banco de dados em memória (só faltou fazer a ordenação decrescente por data/hora)Posteriormente/atualmente:
- [x] Rota `GET /clientes/:id/extrato` com banco de dados PostgreSQL
- [x] Rota `POST /clientes/:id/transacoes` com PostgresA imagem do `Dockerfile` está disponível no Docker Hub: [kauefraga/esquilo-aniquilador-api](https://hub.docker.com/repository/docker/kauefraga/esquilo-aniquilador-api/general).
Minha submissão para a Rinha de Backend está [aqui](https://github.com/zanfranceschi/rinha-de-backend-2024-q1/tree/main/participantes/kauefraga-golang).
> [!IMPORTANT]
> Uma pessoa muito importante na conclusão desse projeto foi o Shwuy ([@sxhk0](https://github.com/sxhk0)), que me ajudou a chegar no 100% OK e me acompanhou no processo!## ⬇ Como instalar e botar pra fu...ncionar
1. Clone o repositório
2. Rode `go run cmd/api/main.go`O segundo passo já deve instalar as dependências. Caso contrário, rode `go mod download` e execute a segunda instrução de novo.
```bash
# (1)
git clone https://github.com/kauefraga/esquilo-aniquilador.git
cd esquilo-aniquilador# (2)
go run cmd/api/main.go# (3?)
go mod download
```## 🧪 Como rodar os testes
### Testes Gatling
Dá uma olhada no [repositório principal](https://github.com/zanfranceschi/rinha-de-backend-2024-q1), meu mano! Especialmente [aqui](https://github.com/zanfranceschi/rinha-de-backend-2024-q1?tab=readme-ov-file#ferramenta-de-teste).
Veja os resultados do último teste que rodei:
![Resultados do teste de estresse](.github/resultado.png)
### Testes unitários
Pra que isso?! 🤡
### Testes para verificar as regras de negócio (manual mesmo)
Requisitos: [Visual Studio Code](https://code.visualstudio.com).
1. Instale a extensão [REST Client](https://marketplace.visualstudio.com/items?itemName=humao.rest-client)
2. Abra o arquivo `requests.http`
3. Certifique-se de que o banco de dados e a API estejam rodando
4. Clique em `Send Request`, faça isso para cada requisição descrita/que aparece```bash
# (1)
code --install-extension humao.rest-client# (2)
code . # Esteja dentro do diretório esquilo-aniquilador (raiz), que você clonou
```## 🧙♂️ O que tunei e como
Não tunei nada, mal implementei o necessário 🤣.
## 🌳 Interações
### Redes Sociais
- [Meu Twitter/X](https://twitter.com/rkauefraga)
- [Rinha de Backend](https://twitter.com/rinhadebackend)### Meus tweets/xweets
- [Início](https://twitter.com/rkauefraga/status/1757072132729639271)
- [Sobre a regra de negócio que retorna 422](https://twitter.com/rkauefraga/status/1757524333629464861)
- [Sobre o README desse projeto](https://twitter.com/rkauefraga/status/1757606382570782877)
- [Quando terminei a rota de extrato](https://twitter.com/rkauefraga/status/1757870172969246833)
- [Começo do fim](https://twitter.com/rkauefraga/status/1766865225473524221)
- [Fiz o teste passar 100% OK mas com uma latência miserável](https://twitter.com/rkauefraga/status/1766918566425612487)
- [Quando terminei os testes com 100% OK e uma latência agradável](https://twitter.com/rkauefraga/status/1766939474020167970)
- [Finalmente](https://twitter.com/rkauefraga/status/1766954158010052674)## 📝 Licença
Este projeto está sob licença do MIT - Veja a [LICENÇA](https://github.com/kauefraga/esquilo-aniquilador/blob/main/LICENSE) para mais informações.
---
Feito com ❤ por Kauê Fraga Rodrigues.