import { ModuleRef } from "@nestjs/core"; import { QueueJobOptions } from "src/integrations/message-queue/drivers/interfaces/job-options.interface"; import { MessageQueueDriver } from "src/integrations/message-queue/drivers/interfaces/message-queue-driver.interface"; import { MessageQueueJob, MessageQueueJobData } from "src/integrations/message-queue/interfaces/message-queue-job.interface"; import { MessageQueue } from "src/integrations/message-queue/message-queue.constants"; import { MessageQueueModule } from "src/integrations/message-queue/message-queue.module"; import { getJobClassName } from "src/integrations/message-queue/utils/get-job-class-name.util"; import { QueueWorkerModule } from "src/queue-worker.module"; export class SyncDriver implements MessageQueueDriver { constructor(private readonly jobsModuleRef: ModuleRef) {} async add(_queueName: MessageQueue, jobName: string, data: T, _options?: QueueJobOptions | undefined): Promise { const jobClassName = getJobClassName(jobName); const job: MessageQueueJob = this.jobsModuleRef.get(jobClassName, { strict: true }); return await job.handle(data); } work(queueName: MessageQueue, handler: ({ data, id }: { data: T; id: string; }) => void | Promise) { return; } }