Files
vyndr/src/routes/alerts.js
T

42 lines
1.3 KiB
JavaScript

const express = require('express');
const { requireAuth } = require('../middleware/auth');
const { checkGracePeriod } = require('../middleware/gracePeriod');
const { getAlertsForUser, markAlertRead } = require('../services/alertService');
const router = express.Router();
const PAID_TIERS = new Set(['analyst', 'desk']);
router.get('/', requireAuth, checkGracePeriod, async (req, res) => {
if (!PAID_TIERS.has(req.user.tier)) {
return res.status(403).json({ error: 'Alerts are available on Analyst and Desk tiers' });
}
try {
const result = await getAlertsForUser(req.user.id);
return res.json(result);
} catch (err) {
console.error('[VYNDR] Alerts error:', err.message);
return res.status(503).json({ error: 'Alerts temporarily unavailable' });
}
});
router.patch('/:id/read', requireAuth, checkGracePeriod, async (req, res) => {
if (!PAID_TIERS.has(req.user.tier)) {
return res.status(403).json({ error: 'Alerts are available on Analyst and Desk tiers' });
}
try {
const result = await markAlertRead(req.params.id, req.user.id);
if (!result) {
return res.status(404).json({ error: 'Alert not found' });
}
return res.json(result);
} catch (err) {
console.error('[VYNDR] Alert update error:', err.message);
return res.status(503).json({ error: 'Alert update failed' });
}
});
module.exports = router;