Skip to content

feat(games): endpoint para cadastrar um jogo (POST /games) #2

Description

@freemanpivo

Descrição

Adicionar endpoint para cadastrar um novo jogo.

Requisitos:

  • POST /games
  • Validação do payload
  • Persistência em storage (arquivo data/games_seed.json ou DB futuro)
  • Retornar 201 Created com o recurso criado ou 400/422 em caso de erro

Payload esperado:

{
  "id": "string-ulid",
  "name": "string",
  "releaseDate": "YYYY-MM-DD",
  "platform": "string",
  "gender": "string",
  "subGender": "string",
  "rating": 0
}

Critérios de Aceite

  • Endpoint POST /games implementado
  • Validação mínima (title, platform obrigatórios)
  • Retorna 201 e JSON do jogo criado
  • Persistência no arquivo data/games_seed.json
  • Retorna 400 em caso de payload inválido
  • Testes unitários cobrindo happy path e validações
  • OpenAPI atualizado com POST /games

Tasks

  • Definir Game struct
  • Criar handler CreateGame e registrar app.Post("/games", CreateGame)
  • Validar payload (title, platform)
  • Persistir no arquivo data/games_seed.json com lock (mutex)
  • Atualizar openapi.yaml
  • Criar testes internal/games/games_create_test.go

Exemplo de Requisição

POST /games
Content-Type: application/json

{
  "name": "The Legend of Go",
  "releaseDate": "2025-01-01",
  "platform": "PC",
  "gender": "Programing",
  "subGender": "Simple",
  "rating": 0
}

Resposta:

{
  "id": "01K9JYHR1HA9RNE7QVBXMMW4TH",
  "name": "The Legend of Go",
  "releaseDate": "2025-01-01",
  "platform": "PC",
  "gender": "Programing",
  "subGender": "Simple",
  "rating": 0
}

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions