diff --git a/index.js b/index.js index 15ba07777..a1964bbd9 100644 --- a/index.js +++ b/index.js @@ -18,7 +18,7 @@ function UI() { router.get('/queues', require('./routes/queues')) router.put('/queues/:queueName/retry', require('./routes/retryAll')) router.put('/queues/:queueName/:id/retry', require('./routes/retryJob')) - router.put('/queues/:queueName/clean', require('./routes/cleanAll')) + router.put('/queues/:queueName/clean/:queueStatus', require('./routes/cleanAll')) router.get('/', require('./routes/index')) app.use(bodyParser.json()) diff --git a/routes/cleanAll.js b/routes/cleanAll.js index d8be4482e..a17b132d8 100644 --- a/routes/cleanAll.js +++ b/routes/cleanAll.js @@ -1,6 +1,6 @@ module.exports = async function handler(req, res) { try { - const { queueName } = req.params + const { queueName, queueStatus } = req.params const { queues } = req.app.locals const GRACE_TIME_MS = 5000 @@ -10,7 +10,7 @@ module.exports = async function handler(req, res) { return res.status(404).send({ error: 'queue not found' }) } - await queue.clean(GRACE_TIME_MS, 'delayed') + await queue.clean(GRACE_TIME_MS, queueStatus) return res.sendStatus(200) } catch (e) { diff --git a/ui/components/App.js b/ui/components/App.js index 564abe69c..e7a5eea88 100644 --- a/ui/components/App.js +++ b/ui/components/App.js @@ -11,7 +11,8 @@ export default function App({ basePath }) { setSelectedStatuses, retryJob, retryAll, - cleanAll, + cleanAllDelayed, + cleanAllFailed } = useStore(basePath) return ( @@ -31,7 +32,8 @@ export default function App({ basePath }) { selectStatus={setSelectedStatuses} retryJob={retryJob(queue.name)} retryAll={retryAll(queue.name)} - cleanAll={cleanAll(queue.name)} + cleanAllDelayed={cleanAllDelayed(queue.name)} + cleanAllFailed={cleanAllFailed(queue.name)} /> ))} diff --git a/ui/components/Queue.js b/ui/components/Queue.js index ff4bf9aa0..7deda41f8 100644 --- a/ui/components/Queue.js +++ b/ui/components/Queue.js @@ -255,11 +255,14 @@ function Jobs({ retryJob, queue: { jobs, name }, status }) { } const actions = { - failed: ({ retryAll }) => { - return + failed: ({ retryAll, cleanAllFailed }) => { + return
+ + +
}, - delayed: ({ cleanAll }) => { - return + delayed: ({ cleanAllDelayed }) => { + return }, } @@ -279,7 +282,8 @@ function QueueActions(props) { export default function Queue({ retryAll, retryJob, - cleanAll, + cleanAllDelayed, + cleanAllFailed, queue, selectStatus, selectedStatus, @@ -302,7 +306,8 @@ export default function Queue({ <> diff --git a/ui/components/hooks/useStore.js b/ui/components/hooks/useStore.js index 15f6a356d..95b41d53e 100644 --- a/ui/components/hooks/useStore.js +++ b/ui/components/hooks/useStore.js @@ -54,8 +54,13 @@ export default function useStore(basePath) { update, ) - const cleanAll = queueName => () => - fetch(`${basePath}/queues/${queueName}/clean`, { method: 'put' }).then( + const cleanAllDelayed = queueName => () => + fetch(`${basePath}/queues/${queueName}/clean/delayed`, { method: 'put' }).then( + update, + ) + + const cleanAllFailed = queueName => () => + fetch(`${basePath}/queues/${queueName}/clean/failed`, { method: 'put' }).then( update, ) @@ -63,7 +68,8 @@ export default function useStore(basePath) { state, retryJob, retryAll, - cleanAll, + cleanAllDelayed, + cleanAllFailed, selectedStatuses, setSelectedStatuses, }