UNPKG

@sidequest/engine

Version:

@sidequest/engine is the core engine of SideQuest, a distributed background job processing system for Node.js and TypeScript.

47 lines (43 loc) 1.51 kB
'use strict'; var grantQueueConfig = require('../queue/grant-queue-config.cjs'); /** * Manages queue configurations and retrieves active queues with runnable jobs. */ class QueueManager { backend; queues; defaults; /** * Creates a new QueueManager. * @param backend The backend instance. * @param queues The queue configurations to manage. * @param defaults Optional default queue settings. */ constructor(backend, queues, defaults) { this.backend = backend; this.queues = queues; this.defaults = defaults; } /** * Gets all active queues that have runnable jobs, sorted by priority. * @returns A promise resolving to an array of active queue configs. */ async getActiveQueuesWithRunnableJobs() { const queueNames = await this.backend.getQueuesFromJobs(); const queues = []; for (const queue of queueNames) { const fromConfig = this.queues.find((q) => q.name === queue); const queueConfig = await grantQueueConfig.grantQueueConfig(this.backend, { ...fromConfig, name: queue }, this.defaults, false); if (queueConfig) { queues.push(queueConfig); } } return queues .filter((queue) => queue.state === "active") .sort((a, b) => { return (b.priority ?? 0) - (a.priority ?? 0); }); } } exports.QueueManager = QueueManager; //# sourceMappingURL=queue-manager.cjs.map