import 'reflect-metadata'; import { config as setupEnv } from 'dotenv-flow'; setupEnv({ silent: true }); import { getQueue, JobKind } from '@spokenio/jobqueue-producer'; import { JobId, JobOptions } from 'bull'; import logger from '@/logger'; type JSONJob = { id: JobId; name: string; data: Record | undefined; opts: JobOptions; progress: number; delay: number; timestamp: number; attemptsMade: number; failedReason: unknown; stacktrace: string[] | null; returnvalue: unknown; finishedOn: number | null; processedOn: number | null; }; const main = async () => { const failedJobs: JSONJob[] = []; await Promise.all( [JobKind.FETCH_GOOGLE_SHOPPING_INFO_1].map(async (jobkind) => { const queue = getQueue(jobkind); failedJobs.push(...(await queue.getFailed()).map((job) => job.toJSON())); }) ); console.log(JSON.stringify(failedJobs, null, 2)); }; if (require.main === module) { console.time('get-failed-jobs'); main() .then(() => { console.timeEnd('get-failed-jobs'); }) .catch((error) => { logger.error(error); process.exit(1); }); }