3.1 KiB
🎮 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 ou Docker Engine.
- Git
🚀 Passo a Passo de Instalação
1. Clone o repositório do Gitea:
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.
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:
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.
docker compose up -d --build
4. Instale as dependências do PHP:
docker compose exec app composer install
5. Crie as tabelas no Banco de Dados:
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):
{ "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_idextraí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