All materials
treks.js
jstreks.js
const express = require('express');
const router = express.Router();
const pool = require('../db');
const logger = require('../middleware/logging').logger;
router.get('/', async (req, res, next) => {
try {
const result = await pool.query(
'SELECT id, name, destination, duration_days, max_group_size, price_npr, price_usd, difficulty FROM treks ORDER BY name'
);
logger.info('Treks listed', {
requestId: req.requestId,
route: 'GET /api/treks',
count: result.rows.length
});
res.json(result.rows);
} catch (err) {
next(err);
}
});
router.get('/:id', async (req, res, next) => {
try {
const { id } = req.params;
const result = await pool.query(
'SELECT * FROM treks WHERE id = $1',
[id]
);
if (result.rows.length === 0) {
logger.warn('Trek not found', {
requestId: req.requestId,
route: `GET /api/treks/${id}`,
trekId: id
});
return res.status(404).json({ error: 'Trek not found' });
}
logger.info('Trek retrieved', {
requestId: req.requestId,
route: `GET /api/treks/${id}`,
trekName: result.rows[0].name
});
res.json(result.rows[0]);
} catch (err) {
next(err);
}
});
module.exports = router;