From 431dc420a93be696ca484c6656f8b32aac1c2f77 Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Thu, 9 May 2024 12:43:37 +0800 Subject: [PATCH] add delete task api --- packages/api/src/routers/task_router.ts | 35 ++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) diff --git a/packages/api/src/routers/task_router.ts b/packages/api/src/routers/task_router.ts index f6e50d026..a4e47f5f8 100644 --- a/packages/api/src/routers/task_router.ts +++ b/packages/api/src/routers/task_router.ts @@ -41,7 +41,40 @@ export function taskRouter() { res.send(result) } catch (e) { logger.error('failed to get task', e) - res.status(500) + res.sendStatus(500) + } + }) + + router.delete('/:id', cors(corsConfig), async (req, res) => { + const token = getTokenByRequest(req) + const claims = await getClaimsByToken(token) + if (!claims) { + return res.sendStatus(401) + } + + try { + const job = await getJob(req.params.id) + if (!job || !job.id) { + return res.sendStatus(404) + } + + const jobState = await job.getState() + if (jobState === 'active') { + // cannot delete active task + return res.status(400).send('Task is active') + } + + // remove job + await job.remove() + + if (['completed', 'failed'].includes(jobState)) { + return res.status(200).send('Task removed') + } + + res.status(200).send('Task cancelled') + } catch (e) { + logger.error('failed to delete task', e) + res.sendStatus(500) } })