100 lines
3.0 KiB
Markdown
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* |