UNPKG

@sidequest/engine

Version:

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

45 lines (42 loc) 1.47 kB
import { grantQueueConfig } from '../queue/grant-queue-config.js'; /** * 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(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); }); } } export { QueueManager }; //# sourceMappingURL=queue-manager.js.map