From ec5b03e76e01a3e30404f18674becdba06e9bdc3 Mon Sep 17 00:00:00 2001 From: Izad0ra Date: Tue, 28 Apr 2026 00:33:33 +0000 Subject: [PATCH] Enviar arquivos para "/" --- README.md | 108 +++++++++++++++++++++++++++++++++++++++++++++++++++++ schema.sql | 41 ++++++++++++++++++++ tests.http | 54 +++++++++++++++++++++++++++ 3 files changed, 203 insertions(+) create mode 100644 README.md create mode 100644 schema.sql create mode 100644 tests.http diff --git a/README.md b/README.md new file mode 100644 index 0000000..7b5d457 --- /dev/null +++ b/README.md @@ -0,0 +1,108 @@ +# Biblioteca do Usuário - GameVerse + +Este é o microsserviço da Biblioteca do Usuário para o projeto GameVerse. +Eu sou responsável por guardar jogos e gift cards que os usuários compraram. +Aqui eu mantenho a coleção digital de cada usuário organizada e acessível. + +## Minha responsabilidade + +- Guardar jogos comprados pelo usuário +- Guardar gift cards adquiridos +- Manter o histórico de aquisições +- Expor a biblioteca digital para outros serviços + +## Tecnologias usadas + +- Node.js +- Express.js +- MySQL +- CORS + +## Estrutura de dados + +Tabela: `users_library` + +```sql +CREATE TABLE users_library ( + id INT AUTO_INCREMENT PRIMARY KEY, + user_id INT NOT NULL, + type ENUM('game', 'gift_card') NOT NULL, + item_id INT NOT NULL, + title VARCHAR(255) NOT NULL, + platform VARCHAR(100), + acquired_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP +); +``` + +## Endpoints da API + +### POST /library/add +Adiciona um item manualmente à biblioteca do usuário. + +Exemplo de request: +```json +{ + "user_id": 1, + "type": "game", + "item_id": 123, + "title": "The Witcher 3", + "platform": "Steam" +} +``` + +### GET /library/user/:user_id +Retorna todos os itens da biblioteca de um usuário. + +### POST /library/integration/payment-approved +Recebe confirmação de pagamento aprovado e adiciona o item à biblioteca. + +## Fluxo de integração + +1. Recebo dados do serviço de pagamentos +2. Verifico se o item já está na biblioteca +3. Se não estiver, adiciono ao banco +4. Retorno confirmação de sucesso ou erro + +## Dados de teste + +Usuário 1: +- Jogo: "The Witcher 3: Wild Hunt" (Steam) +- Gift Card: "Steam Gift Card $50" + +Usuário 2: +- Jogo: "Cyberpunk 2077" (Epic Games) +- Jogo: "FIFA 24" (EA Play) + +## Como executar + +1. Instalar dependências: +```bash +npm install +``` +2. Criar o banco de dados `gameverse_library` e executar `schema.sql` +3. Iniciar o serviço: +```bash +npm start +``` + +O serviço estará disponível em `http://localhost:3005` + +## Padrão de respostas + +Todas as respostas seguem este formato: +```json +{ + "success": boolean, + "message": string, + "data": any, + "error": any +} +``` + +--- + +Desenvolvido por: +- André de Oliveira Braga +- Izadora Lima de Mendonça + +Centro Universitário Uninorte - Curso de Sistemas de Informação diff --git a/schema.sql b/schema.sql new file mode 100644 index 0000000..aa88e36 --- /dev/null +++ b/schema.sql @@ -0,0 +1,41 @@ +-- 🎮 SCHEMA DO BANCO DE DADOS - Biblioteca do Usuário GameVerse +-- Este arquivo cria minha "casa" no banco de dados! +-- Cada microsserviço tem seu próprio banco, lembra? Isso me deixa independente. + +-- Criando meu banco de dados exclusivo +CREATE DATABASE IF NOT EXISTS gameverse_library; +USE gameverse_library; + +-- Minha tabela principal: users_library +-- Aqui eu guardo TODOS os jogos e gift cards que os usuários compraram +CREATE TABLE users_library ( + id INT AUTO_INCREMENT PRIMARY KEY, -- ID único para cada item na biblioteca + user_id INT NOT NULL, -- ID do usuário dono do item + type ENUM('game', 'gift_card') NOT NULL, -- Tipo: jogo ou cartão presente + item_id INT NOT NULL, -- ID do item no catálogo geral + title VARCHAR(255) NOT NULL, -- Nome do jogo ou gift card + platform VARCHAR(100), -- Plataforma (Steam, Epic, etc.) + acquired_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, -- Quando ganhou isso na biblioteca + + -- Índices para buscas rápidas (como um catálogo organizado!) + INDEX idx_user_id (user_id), -- Para buscar biblioteca de um usuário + INDEX idx_item_id (item_id), -- Para verificar se já tem o item + INDEX idx_type (type) -- Para separar jogos de gift cards +); + +-- 🎭 DADOS DE TESTE - Para desenvolvimento e testes +-- Estes são exemplos de bibliotecas que uso para testar se tudo funciona +INSERT INTO users_library (user_id, type, item_id, title, platform) VALUES +-- Biblioteca do usuário 1 (tem um jogo e um gift card) +(1, 'game', 1, 'The Witcher 3: Wild Hunt', 'Steam'), +(1, 'gift_card', 2, 'Steam Gift Card $50', 'Steam'), + +-- Biblioteca do usuário 2 (tem dois jogos) +(2, 'game', 3, 'Cyberpunk 2077', 'Epic Games'), +(2, 'game', 4, 'FIFA 24', 'EA Play'); + +-- Agora meu banco está pronto! 🎉 +-- Posso guardar jogos, gift cards, e mostrar para os usuários suas coleções! + +-- Desenvolvido por: André de Oliveira Braga e Izadora Lima de Mendonça +-- Projeto GameVerse - Microsserviços - Centro Universitário Uninorte - Curso de Sistemas de Informação \ No newline at end of file diff --git a/tests.http b/tests.http new file mode 100644 index 0000000..876574d --- /dev/null +++ b/tests.http @@ -0,0 +1,54 @@ +# 🧪 TESTES DA API - Biblioteca do Usuário GameVerse +# Este arquivo contém exemplos de como testar meus endpoints +# Use com REST Client no VS Code ou qualquer ferramenta HTTP + +### 1. Testar adicionar item manualmente +POST http://localhost:3005/library/add +Content-Type: application/json + +{ + "user_id": 1, + "type": "game", + "item_id": 999, + "title": "Test Game", + "platform": "Steam" +} + +### 2. Ver biblioteca do usuário 1 +GET http://localhost:3005/library/user/1 + +### 3. Ver biblioteca do usuário 2 +GET http://localhost:3005/library/user/2 + +### 4. Simular pagamento aprovado (integração) +POST http://localhost:3005/library/integration/payment-approved +Content-Type: application/json + +{ + "user_id": 1, + "type": "gift_card", + "item_id": 888, + "title": "Epic Games Gift Card $25", + "platform": "Epic Games" +} + +### 5. Testar erro - dados faltando +POST http://localhost:3005/library/add +Content-Type: application/json + +{ + "user_id": 1 + // Faltam type, item_id, title +} + +### 6. Testar erro - tipo inválido +POST http://localhost:3005/library/add +Content-Type: application/json + +{ + "user_id": 1, + "type": "filme", // Tipo inválido + "item_id": 123, + "title": "Test Movie", + "platform": "Netflix" +} \ No newline at end of file