freemanpivo / freemanpivo/gamesapi

`feat(user): cadastro de usuário + lista de jogos concluidos`

Open
#3 0 comments 0 reactions 0 assignees View on GitHub
enhancement feature
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.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.