All files / src/endpoints triggerBudgetSumUp.ts

7.14% Statements 1/14
0% Branches 0/5
0% Functions 0/1
7.14% Lines 1/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 34                    2x                                              
import { QueueEvents } from "bullmq"
import { Request, Response } from "express"
import pino from "pino"
 
import { env } from "../config"
import { getQueue } from "../queues"
import { BudgetSumUpJob } from "../queues/jobs/budgetSumUp"
import { addJobToQueue } from "../queues/utils"
import { redis as connection } from "../redis"
 
const logger = pino()
 
export async function triggerBudgetSumUp(_req: Request, res: Response) {
  logger.info("=================================== Triggering budget sum-up ===================================")
 
  if (!env.importerUrl || !env.importDirectory || !env.autoImportSecret) {
    res.status(400).json({ message: "Budget sum-up is not configured (importerUrl, importDirectory, autoImportSecret are required)" })
    return
  }
 
  const queue = await getQueue()
  const queueEvents = new QueueEvents(queue.name, { connection })
  try {
    const job = await addJobToQueue(new BudgetSumUpJob(), true)
    await job.waitUntilFinished(queueEvents)
    res.status(200).json({ message: "Budget sum-up completed" })
  } catch (err) {
    logger.error({ err }, "Budget sum-up job failed")
    res.status(500).json({ message: "Budget sum-up job failed" })
  } finally {
    await queueEvents.close()
  }
}