From a566c14b666aabc562ade87f009ab29788a652c4 Mon Sep 17 00:00:00 2001 From: Izad0ra Date: Tue, 28 Apr 2026 00:33:12 +0000 Subject: [PATCH] Enviar arquivos para "/" --- .env.example | 17 +++++++++++++++++ .gitignore | 35 +++++++++++++++++++++++++++++++++++ app.js | 29 +++++++++++++++++++++++++++++ libraryRoutes.js | 26 ++++++++++++++++++++++++++ package.json | 30 ++++++++++++++++++++++++++++++ 5 files changed, 137 insertions(+) create mode 100644 .env.example create mode 100644 .gitignore create mode 100644 app.js create mode 100644 libraryRoutes.js create mode 100644 package.json diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..0ddef65 --- /dev/null +++ b/.env.example @@ -0,0 +1,17 @@ +# 🎮 CONFIGURAÇÃO DO AMBIENTE - Biblioteca do Usuário GameVerse +# Este arquivo mostra quais configurações eu preciso para funcionar + +# Configurações do Banco de Dados MySQL +DB_HOST=localhost +DB_USER=root +DB_PASSWORD= +DB_NAME=gameverse_library + +# Porta onde eu rodo (porta 3005 para não conflitar com outros serviços) +PORT=3005 + +# Configurações de CORS (para aceitar requisições de outros serviços) +CORS_ORIGIN=* + +# Modo de desenvolvimento +NODE_ENV=development \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ae3f20c --- /dev/null +++ b/.gitignore @@ -0,0 +1,35 @@ +# Arquivos do Node.js +node_modules/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Arquivos de ambiente +.env +.env.local +.env.development.local +.env.test.local +.env.production.local + +# Arquivos do sistema operacional +.DS_Store +Thumbs.db + +# Logs da aplicação +logs/ +*.log + +# Arquivos temporários +tmp/ +temp/ + +# Arquivos de backup +*.bak +*.backup + +# Arquivos do VS Code (opcionais - descomente se quiser ignorar) +# .vscode/ + +# Arquivos de teste locais (não subir para o repositório) +test-results/ +coverage/ \ No newline at end of file diff --git a/app.js b/app.js new file mode 100644 index 0000000..7e8a1bf --- /dev/null +++ b/app.js @@ -0,0 +1,29 @@ +const express = require('express'); +const cors = require('cors'); +const routes = require('./routes/libraryRoutes'); + +// Este é o coração do nosso microsserviço da Biblioteca do Usuário! +// Aqui eu configuro o servidor Express que vai gerenciar todas as rotas da nossa API. +// É como o porteiro do prédio - recebe as requisições e direciona para os andares certos. +const app = express(); + +// CORS é fundamental para permitir que outros microsserviços (como o frontend ou Laravel central) +// façam requisições para nossa API sem problemas de segurança do navegador. +app.use(cors()); + +// Este middleware transforma o corpo das requisições JSON em objetos JavaScript +// que podemos usar facilmente nos nossos controllers. +app.use(express.json()); + +// Todas as rotas da biblioteca ficam sob o prefixo '/library' +// Isso organiza nossa API e deixa claro que tudo aqui é sobre a biblioteca do usuário. +app.use('/library', routes); + +// O serviço roda na porta 3005 - escolhi uma porta alta para não conflitar +// com outros serviços que podem estar rodando na máquina. +app.listen(3005, () => { + console.log('Library Service rodando na porta 3005'); +}); + +// 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 diff --git a/libraryRoutes.js b/libraryRoutes.js new file mode 100644 index 0000000..e1b3bb7 --- /dev/null +++ b/libraryRoutes.js @@ -0,0 +1,26 @@ +const express = require('express'); +const router = express.Router(); +const controller = require('../controllers/libraryController'); + +// Este arquivo define as "portas de entrada" da nossa API! +// Cada rota é como uma porta específica do prédio - cada uma leva a um lugar diferente. +// Seguimos convenções REST: POST para criar, GET para buscar. + +// Rota para adicionar um item manualmente à biblioteca +// Método: POST /library/add +// Uso: Para correções ou imports especiais (não para compras normais) +router.post('/add', controller.addItem); + +// Rota para buscar toda a biblioteca de um usuário +// Método: GET /library/user/:user_id +// Exemplo: GET /library/user/123 retorna todos os jogos e gift cards do usuário 123 +router.get('/user/:user_id', controller.getLibrary); + +// Rota CRUCIAL para integração com o serviço de pagamentos! +// Método: POST /library/integration/payment-approved +// Esta rota é chamada AUTOMATICAMENTE quando um pagamento é aprovado. +// É o elo entre "comprou" e "recebeu na biblioteca". +router.post('/integration/payment-approved', controller.paymentApproved); + +// Exportamos o router para que o app.js possa usar essas rotas +module.exports = router; diff --git a/package.json b/package.json new file mode 100644 index 0000000..cc4d8f0 --- /dev/null +++ b/package.json @@ -0,0 +1,30 @@ +{ + "name": "library-service", + "version": "1.0.0", + "description": "🎮 Microsserviço da Biblioteca do Usuário - GameVerse. Gerencia jogos comprados e gift cards dos usuários.", + "main": "app.js", + "scripts": { + "start": "node app.js", + "dev": "nodemon app.js", + "test": "echo \"Para testar, use o arquivo tests.http com REST Client\"", + "setup-db": "echo \"Execute o arquivo schema.sql no MySQL Workbench\"" + }, + "keywords": ["gameverse", "library", "microservice", "nodejs", "mysql"], + "author": "André de Oliveira Braga e Izadora Lima de Mendonça", + "contributors": [ + "André de Oliveira Braga", + "Izadora Lima de Mendonça" + ], + "license": "MIT", + "dependencies": { + "express": "^4.18.2", + "mysql2": "^3.9.0", + "cors": "^2.8.5" + }, + "devDependencies": { + "nodemon": "^3.0.0" + }, + "engines": { + "node": ">=14.0.0" + } +} \ No newline at end of file