🎮 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:


🚀 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_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

Description
No description provided
Readme 115 KiB
Languages
Blade 52.5%
PHP 46.5%
Dockerfile 0.4%
JavaScript 0.3%
CSS 0.3%