Files
DBE-S03/index.js
T

105 lines
2.4 KiB
JavaScript

// Anderson Valadares Pinto (20251PL.TSIAD0018) [SLS]
import express from 'express';
import path from 'path';
import { fileURLToPath } from 'url';
// Configuração para resolução de caminhos com ES Modules
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const app = express();
const PORT = process.env.PORT || 3000;
// Configuração do mecanismo de visualização EJS
app.set('view engine', 'ejs');
app.set('views', path.join(__dirname, 'views'));
// Array com os dados dos times (conforme solicitado no enunciado com estádios distintos)
const times = [
{
id: 1,
nome: 'Flamengo',
estadio: 'Estádio do Maracanã',
cidade: 'Rio de Janeiro - RJ'
},
{
id: 2,
nome: 'Palmeiras',
estadio: 'Nubank Parque',
cidade: 'São Paulo - SP'
},
{
id: 3,
nome: 'Cruzeiro',
estadio: 'Estádio Mineirão',
cidade: 'Belo Horizonte - MG'
},
{
id: 4,
nome: 'Athletico-PR',
estadio: 'Ligga Arena (AKA Arena da Baixada)',
cidade: 'Curitiba - PR'
},
{
id: 5,
nome: 'Bahia',
estadio: 'Arena Fonte Nova',
cidade: 'Salvador - BA'
},
{
id: 6,
nome: 'Red Bull Bragantino',
estadio: 'Estádio Municipal Cícero de Souza Marques',
cidade: 'Bragança Paulista - SP'
},
{
id: 7,
nome: 'São Paulo',
estadio: 'MorumBIS',
cidade: 'São Paulo - SP'
}
];
// Rota GET / - Boas-vindas
app.get('/', (req, res) => {
res.render('index', {
titulo: 'Catálogo de Times do Brasileirão',
mensagem: 'Bem-vindo ao Catálogo Interativo de Times de Futebol!',
totalTimes: times.length
});
});
// Rota GET /times - Listagem de times
app.get('/times', (req, res) => {
res.render('times', {
titulo: 'Lista de Times',
times
});
});
// Rota GET /times/:id - Detalhes de um time por ID
app.get('/times/:id', (req, res) => {
const id = parseInt(req.params.id, 10);
const time = times.find((item) => item.id === id);
if (!time) {
return res.status(404).render('detalhe', {
titulo: 'Time Não Encontrado',
time: null,
mensagemErro: `Time com ID ${req.params.id} não foi encontrado no catálogo.`
});
}
res.render('detalhe', {
titulo: `Detalhes - ${time.nome}`,
time,
mensagemErro: null
});
});
// Inicialização do servidor
app.listen(PORT, () => {
console.log(`Servidor rodando com sucesso na porta ${PORT}: http://localhost:${PORT}`);
});