Skip to content

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

@freemanpivo

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
}

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions