import { Application, CoreBindings, inject, } from "@loopback/core"; import { get } from "@loopback/rest"; import { Queue } from "bull"; import { BullQueueComponentBindings } from "../keys"; import { QueueService } from "../services"; export class QueuesController { constructor( @inject(CoreBindings.APPLICATION_INSTANCE) public application: Application, @inject(BullQueueComponentBindings.BULL_QUEUE_SERVICE) public queueServices: QueueService, ) { } @get('/queues') async getQueues(): Promise { const queues: (Queue | undefined)[] = await this.queueServices.getQueues(); const queuesData = await Promise.all(queues.map(async (queue: Queue | undefined, index: number) => { try { if (!queue) return null; const jobCounts = await queue.getJobCounts(); return { id: index + 1, name: queue.name, ...jobCounts } } catch (err) { console.log(err) } })); return queuesData.filter(Boolean); } }