freemanpivo / freemanpivo/gamesapi
`feat(games): endpoint para cadastrar um jogo (POST /games)`
- Dominant language
- Go
- Stars
- 0
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
Description
### **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:**
```json
{
"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**
- [X] 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**
```http
POST /games
Content-Type: application/json
{
"name": "The Legend of Go",
"releaseDate": "2025-01-01",
"platform": "PC",
"gender": "Programing",
"subGender": "Simple",
"rating": 0
}
```
**Resposta:**
```json
{
"id": "01K9JYHR1HA9RNE7QVBXMMW4TH",
"name": "The Legend of Go",
"releaseDate": "2025-01-01",
"platform": "PC",
"gender": "Programing",
"subGender": "Simple",
"rating": 0
}
```
---
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.