# 🎮 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 https://git.juancjc.com.br/Salvatore/wishlist-service.git 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 ` ### 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*