Files
wishlist-service/README.md

100 lines
3.0 KiB
Markdown

# 🎮 Gameverse - Wishlist Service
Este é o microsserviço responsável pelo gerenciamento de Favoritos e Listas de Desejos (Wishlist) dos usuários no ecossistema Gameverse. Desenvolvido com **Laravel 11**, operando em um ambiente isolado via **Docker** e protegido por autenticação **JWT (RS256)**.
---
## 🛠️ Tecnologias Utilizadas
* **Framework:** Laravel 11 (PHP 8.3)
* **Banco de Dados:** MySQL 8.2
* **Infraestrutura:** Docker & Docker Compose (Ambiente customizado, sem dependência do Laravel Sail)
* **Segurança:** Autenticação via Token JWT (`firebase/php-jwt`)
---
## ⚙️ Pré-requisitos
Para rodar este microsserviço localmente, você precisará ter instalado em sua máquina:
* [Docker Desktop](https://www.docker.com/products/docker-desktop/) ou Docker Engine.
* [Git](https://git-scm.com/)
---
## 🚀 Passo a Passo de Instalação
**1. Clone o repositório do Gitea:**
```bash
git clone <URL_DO_SEU_REPOSITORIO_NO_GITEA>
cd wishlist-service
```
**2. Configure o ambiente:**
Crie uma cópia do arquivo de configuração base.
```bash
cp .env.example .env
```
Abra o arquivo `.env` gerado e certifique-se de configurar a conexão com o banco de dados e as chaves públicas do JWT conforme fornecido pela equipe de Autenticação:
```env
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=gameverse_wishlist
DB_USERNAME=root
DB_PASSWORD=root
JWT_ISSUER="https://sistema-distribuido-trabalho-faculd.vercel.app"
JWT_AUDIENCE="internal-apis"
JWT_PUBLIC_KEY_PEM="-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----"
```
**3. Suba os containers do Docker:**
Este comando fará o build da imagem do PHP 8.3 com os drivers necessários e iniciará o MySQL.
```bash
docker compose up -d --build
```
**4. Instale as dependências do PHP:**
```bash
docker compose exec app composer install
```
**5. Crie as tabelas no Banco de Dados:**
```bash
docker compose exec app php artisan migrate
```
O servidor estará rodando e disponível em: `http://localhost:8000`
---
## 🔒 Autenticação e Rotas (API)
Todas as rotas da Wishlist são protegidas pelo middleware customizado `JwtAuthMiddleware`. O cliente deve enviar o Token JWT no cabeçalho da requisição:
`Authorization: Bearer <SEU_TOKEN_AQUI>`
### Endpoints Disponíveis:
#### 1. Salvar ou Atualizar Jogo na Lista
* **Rota:** `POST /api/wishlist`
* **Body (JSON):**
```json
{
"game_id": "string (Obrigatório)",
"is_wishlist": "boolean (Opcional, default false)",
"is_favorite": "boolean (Opcional, default false)",
"saved_for_later": "boolean (Opcional, default false)",
"price_alert": "boolean (Opcional, default false)"
}
```
#### 2. Listar Jogos do Usuário
* **Rota:** `GET /api/wishlist`
* **Retorno:** Lista de objetos contendo os IDs dos jogos e suas respectivas flags (favorito, alerta de preço, etc) atrelados ao `auth_id` extraído do Token.
#### 3. Remover Jogo da Lista
* **Rota:** `DELETE /api/wishlist/{game_id}`
* **Retorno:** Mensagem de sucesso confirmando a remoção do jogo da base de dados.
---
*Centro Educacional UniNorte - Projeto Gameverse*