@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
JavaScript
;
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