Skip to content

freemanpivo/gamesapi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

games-api

Exemplo de API em Go organizanda por feature folders, usando Fiber. Dados de seed (80 jogos) são lidos de app/data/games_seed.json.

Requisitos

  • Go 1.21+
  • Docker & Docker Compose (se for usar containers)
  • make (opcional, mas recomendado)

Estrutura do projeto

games-api ├── cmd │ └── main.go ├── data │ └── games_seed.json ├── docker-compose.yml ├── Dockerfile ├── go.mod ├── go.sum ├── internal │ ├── games │ │ ├── handler.go │ │ ├── model.go │ │ ├── repository.go │ │ ├── routes.go │ │ └── service.go │ └── health │ └── health.go ├── Makefile ├── openapi.yml ├── pkg │ └── ulidutil │ └── ulid.go └── README.md 

Como rodar (local, sem Docker)

  1. Instale dependências e verifique módulos:
make tidy
  1. Rodar localmente (usa data/games_seed.json):
make run
  1. Build local do binário:
make build # binário gerado em bin/games-api

Rodando com Docker / Docker Compose

  1. Construir a imagem Docker:
make docker-build
  1. Subir containers (monta ./data como /app/data no container):
make up
  1. Logs, parar e remover:
make logs make down

Observação: o docker-compose.yml monta a pasta local ./data em /app/data do container (read-only). Garanta que data/games_seed.json esteja presente na raiz do projeto antes de subir o compose.

Makefile — comandos úteis

Lista dos comandos principais (já disponíveis no Makefile):

  • make ou make help — mostra os comandos disponíveis.
  • make tidygo mod tidy e go mod verify.
  • make build — compila o binário em bin/games-api.
  • make run — executa go run main.go (usa o seed JSON em ./data).
  • make test — roda go test ./... -v.
  • make lint — formata o código (go fmt ./...).

Docker related:

  • make docker-build — builda a imagem Dockerfile.
  • make docker-run — roda a imagem via Dockerfile.
  • make updocker-compose up --build -d.
  • make downdocker-compose down.
  • make logs — segue logs do serviço.
  • make shell — abre um shell dentro do container (/bin/sh).
  • make docker-clean — remove containers/imagens criadas.

Utilitários:

  • make healthcurl no endpoint GET /health (usa PORT 3000 por padrão).

Seed data

  • O seed com 80 jogos está em data/games_seed.json e é versionado no repositório.
  • O serviço carrega esse arquivo ao iniciar; a aplicação espera encontrar data/games_seed.json no diretório de trabalho.

Exemplo de requisição CURL (local)

Você pode testar a API localmente (porta padrão 3000) com todos os parâmetros mockados:

curl -X GET "http://localhost:3000/games?name=mario&platform=snes&genre=Platform&subGenre=Adventure" \ -H "Accept: application/json" | jq

Exemplo de resposta:

{ "data": [ { "id": "01H1Z4Q0V1F2G3H4J5K6L7M8N", "name": "Super Mario World", "releaseDate": "1990-11-21", "platform": "snes", "genre": "Platform", "subGenre": "Adventure", "rating": 9.0 } ] }

Parâmetros de exemplo usados:

  • name=mario → busca por nome contendo "mario" (case-insensitive)
  • platform=snes → filtra apenas jogos de Super Nintendo
  • genre=Platform → gênero principal
  • subGenre=Adventure → subgênero

Todos os resultados vêm ordenados por rating (desc) por padrão.

About

Simple Golang API

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors