fix(#65): GET /schedules returns 400 for unknown status query param

This commit is contained in:
Zac Gaetano 2026-05-25 17:40:58 -04:00
parent 548c2ab8a4
commit 75c23448b4

View file

@ -30,10 +30,15 @@ function rowToJson(r) {
};
}
const ALLOWED_STATUS_FILTER = new Set(['all', 'upcoming', 'past']);
// GET /api/v1/schedules?status=upcoming|past|all
router.get('/', async (req, res, next) => {
try {
const status = (req.query.status || 'all').toLowerCase();
if (!ALLOWED_STATUS_FILTER.has(status)) {
return res.status(400).json({ error: `status must be one of: ${[...ALLOWED_STATUS_FILTER].join(', ')}` });
}
let where = 'TRUE';
if (status === 'upcoming') where = `(s.status IN ('pending','running') OR s.end_at >= NOW() - INTERVAL '1 hour')`;
else if (status === 'past') where = `s.status IN ('completed','failed','cancelled') AND s.end_at < NOW()`;