import { Process, Processor } from '@nestjs/bull'; import { Injectable } from '@nestjs/common'; import { ScreenshotterService } from './screenshotter.service'; import { QUEUE_NAME, ScreenshotJob } from './shared'; @Injectable() @Processor(QUEUE_NAME) export class ScreenshotsProcessor { constructor(private readonly screenshotterService: ScreenshotterService) {} @Process() async handleScreenshotJob(job: ScreenshotJob) { try { const imageData = await this.screenshotterService.takeScreenshot({ url: job.data.pageUrl, imageType: job.data.imageType, }); job.moveToCompleted(imageData.toString('base64')); } catch (err) { job.moveToFailed({ message: JSON.stringify(err) }); } } }