All files / src/endpoints triggerAutoImport.ts

0% Statements 0/14
0% Branches 0/5
0% Functions 0/1
0% Lines 0/14

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33                                                                 
import { QueueEvents } from "bullmq"
import { Request, Response } from "express"
import pino from "pino"
 
import { env } from "../config"
import { getQueue } from "../queues"
import { AutoImportJob } from "../queues/jobs/autoImport"
import { addJobToQueue } from "../queues/utils"
 
const logger = pino()
 
export async function triggerAutoImport(_req: Request, res: Response) {
  logger.info("=================================== Triggering auto-import ===================================")
 
  if (!env.importerUrl || !env.importDirectory || !env.autoImportSecret) {
    res.status(400).json({ message: "Auto-import is not configured (importerUrl, importDirectory, autoImportSecret are required)" })
    return
  }
 
  const queue = await getQueue()
  const queueEvents = new QueueEvents(queue.name, { connection: env.redisConnection })
  try {
    const job = await addJobToQueue(new AutoImportJob())
    await job.waitUntilFinished(queueEvents)
    res.status(200).json({ message: "Auto-import completed" })
  } catch (err) {
    logger.error({ err }, "Auto-import job failed")
    res.status(500).json({ message: "Auto-import job failed" })
  } finally {
    await queueEvents.close()
  }
}