UNPKG

bull-arena

Version:

An interactive UI dashboard for Bee Queue

62 lines (53 loc) 1.55 kB
const {rest} = require('lodash'); const QueueHelpers = require('../helpers/queueHelpers'); async function handler(req, res) { const {queueName, queueHost} = req.params; const {Queues, Flows} = req.app.locals; const queue = await Queues.get(queueName, queueHost); const basePath = req.baseUrl; if (!queue) return res.status(404).render('dashboard/templates/queueNotFound', { basePath, queueName, queueHost, hasFlows: Flows.hasFlows(), }); let jobCounts, hasRateLimitTtl, isPaused, globalConfig; if (queue.IS_BEE) { jobCounts = await queue.checkHealth(); delete jobCounts.newestJob; } else if (queue.IS_BULLMQ) { jobCounts = await queue.getJobCounts(...QueueHelpers.BULLMQ_STATES); if (queue.getMeta) { const meta = await queue.getMeta(); if (meta) { const {paused, ...restMeta} = meta; globalConfig = restMeta; } } } else { jobCounts = await queue.getJobCounts(); } if (queue.IS_BULLMQ) { const rateLimitTtl = await queue.getRateLimitTtl(); hasRateLimitTtl = rateLimitTtl > 0; } const stats = await QueueHelpers.getStats(queue); if (!queue.IS_BEE) { isPaused = await QueueHelpers.isPaused(queue); } return res.render('dashboard/templates/queueDetails', { basePath, hasRateLimitTtl, isPaused, queueName, queueHost, queueIsBee: !!queue.IS_BEE, queueIsBullMQ: !!queue.IS_BULLMQ, hasFlows: Flows.hasFlows(), globalConfig, jobCounts, stats, }); } module.exports = handler;