UNPKG

@bull-board/api

Version:

A Dashboard server API built on top of bull or bullmq.

30 lines 1.65 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.createMetricsHistoryHandler = createMetricsHistoryHandler; const GRANULARITIES = ['hour', 'day']; function createMetricsHistoryHandler(provider) { return async function metricsHistoryHandler(req) { var _a, _b; const query = (_a = req === null || req === void 0 ? void 0 : req.query) !== null && _a !== void 0 ? _a : {}; const granularity = (_b = query.granularity) !== null && _b !== void 0 ? _b : 'day'; const queue = typeof query.queue === 'string' && query.queue.length > 0 ? query.queue : undefined; if (!GRANULARITIES.includes(granularity)) { return { status: 400, body: { error: `Invalid granularity: ${String(granularity)}` } }; } const isPresent = (value) => (typeof value === 'string' && value.length > 0) || typeof value === 'number'; if (!isPresent(query.from) || !isPresent(query.to)) { return { status: 400, body: { error: 'Invalid from/to range' } }; } const from = Number(query.from); const to = Number(query.to); if (!Number.isFinite(from) || !Number.isFinite(to) || to < from) { return { status: 400, body: { error: 'Invalid from/to range' } }; } const [completed, failed] = await Promise.all([ provider.getHistory({ queue, metric: 'completed', from, to, granularity }), provider.getHistory({ queue, metric: 'failed', from, to, granularity }), ]); return { status: 200, body: { completed, failed } }; }; } //# sourceMappingURL=metricsHistory.js.map