@bull-board/api
Version:
A Dashboard server API built on top of bull or bullmq.
30 lines • 1.65 kB
JavaScript
;
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