firestore-queue
Version:
A powerful, scalable queue system built on Google Firestore with time-based indexing, auto-configuration, and connection reuse
72 lines • 1.84 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.QueueManager = void 0;
const FireQueue_1 = require("../core/FireQueue");
/**
* Queue Manager for handling multiple queues
*/
class QueueManager {
constructor() {
this.queues = new Map();
}
/**
* Add a queue to the manager
*/
addQueue(name, config) {
if (this.queues.has(name)) {
throw new Error(`Queue '${name}' already exists`);
}
const queue = new FireQueue_1.FireQueue(config);
this.queues.set(name, queue);
return queue;
}
/**
* Get a queue by name
*/
getQueue(name) {
return this.queues.get(name);
}
/**
* Initialize all queues
*/
async initializeAll() {
const initPromises = Array.from(this.queues.values()).map(queue => queue.initialize());
await Promise.all(initPromises);
}
/**
* Get metrics for all queues
*/
async getAllMetrics() {
const metrics = {};
for (const [name, queue] of this.queues) {
metrics[name] = await queue.getMetrics();
}
return metrics;
}
/**
* Shutdown all queues
*/
async shutdownAll() {
const shutdownPromises = Array.from(this.queues.values()).map(queue => queue.shutdown());
await Promise.all(shutdownPromises);
this.queues.clear();
}
/**
* List all queue names
*/
listQueues() {
return Array.from(this.queues.keys());
}
/**
* Remove a queue
*/
async removeQueue(name) {
const queue = this.queues.get(name);
if (queue) {
await queue.shutdown();
this.queues.delete(name);
}
}
}
exports.QueueManager = QueueManager;
//# sourceMappingURL=QueueManager.js.map