freemanpivo / freemanpivo/gamesapi
`feat(user): cadastro de usuário + lista de jogos concluidos`
- Dominant language
- Go
- Stars
- 0
- Forks
- 0
- PR merge metrics
- No merged PRs in 30d
Description
### **Descrição**
Permitir que usuários se cadastrem e mantenham uma lista de jogos concluídos.
**Endpoints:**
- `POST /users` — cria usuário
- `GET /users/{id}` — obtém usuário e sua lista
- `POST /users/{id}/completions` — adiciona jogo concluído
- `GET /users/{id}/completions` — lista jogos concluídos
**Modelo:**
```json
{
"id": "uuid",
"username": "string",
"email": "string",
"completed": ["game-id", "game-id2"]
}
```
---
### **Critérios de Aceite**
- [ ] `POST /users` cadastra usuário
- [ ] `POST /users/{id}/completions` adiciona jogo à lista
- [ ] `GET /users/{id}/completions` retorna lista de jogos concluídos
- [ ] Valida se o `game_id` existe (opcionalmente)
- [ ] Persistência inicial no arquivo `data/users.json`
- [ ] Testes unitários cobrindo CRUD e lista
- [ ] OpenAPI atualizado com os endpoints de usuário
---
### **Tasks**
- [ ] Criar package `internal/users` com handlers CRUD
- [ ] Definir struct `User`
- [ ] Implementar persistência simples (arquivo JSON + mutex)
- [ ] Registrar rotas no app (`app.Post("/users", ...)`)
- [ ] Criar testes `internal/users/users_test.go`
- [ ] Atualizar `openapi.yaml`
---
### **Exemplos de Requisição**
**Criar usuário**
```http
POST /users
{
"username": "pedro",
"email": "pedro@example.com"
}
```
**Adicionar jogo concluído**
```http
POST /users/{id}/completions
{
"game_id": "uuid-do-jogo"
}
```
**Listar concluídos**
```http
GET /users/{id}/completions
```
---
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.