import { getQueue, JobKind } from '@spokenio/jobqueue-producer'; import express, { Express, Request } from 'express'; import monitor from './monitor'; const setup = (): Express => { const app = express(); app.use('/monitor', monitor()); app.post( '/obliterate', async ( req: Request< Record, { error?: string; queues?: string[] }, Record, { force?: string } >, res ) => { const forceQuery = req.query.force; if (forceQuery && typeof forceQuery !== 'string') { return res .status(400) .send({ error: "Query param 'force' has to be of type string" }); } const forceAsString = forceQuery?.toLowerCase().trim(); const force = !!( forceAsString && forceAsString !== 'false' && forceAsString !== '0' ); try { await Promise.all( Object.values(JobKind).map(async (jobName) => { const queue = getQueue(jobName); await queue.pause(); await queue.obliterate({ force, }); }) ); res.status(200).send({ queues: Object.values(JobKind), }); } catch (error) { res.status(400).send({ error: 'Something went wrong', }); } } ); return app; }; export default setup;