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