From 402145b8630d1908c35f8c22846ddc4475f25d3e Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 14 Dec 2020 12:00:35 +0100 Subject: Refactor jobs state --- server/controllers/api/jobs.ts | 40 ++++++++++++++++------------------------ 1 file changed, 16 insertions(+), 24 deletions(-) (limited to 'server/controllers') diff --git a/server/controllers/api/jobs.ts b/server/controllers/api/jobs.ts index 1131a44d6..e14ea2575 100644 --- a/server/controllers/api/jobs.ts +++ b/server/controllers/api/jobs.ts @@ -1,7 +1,8 @@ import * as express from 'express' import { ResultList } from '../../../shared' -import { Job, JobType, JobState } from '../../../shared/models' +import { Job, JobState, JobType } from '../../../shared/models' import { UserRight } from '../../../shared/models/users' +import { isArray } from '../../helpers/custom-validators/misc' import { JobQueue } from '../../lib/job-queue' import { asyncMiddleware, @@ -12,13 +13,11 @@ import { setDefaultSort } from '../../middlewares' import { paginationValidator } from '../../middlewares/validators' -import { listJobsStateValidator, listJobsValidator } from '../../middlewares/validators/jobs' -import { isArray } from '../../helpers/custom-validators/misc' -import { jobStates } from '@server/helpers/custom-validators/jobs' +import { listJobsValidator } from '../../middlewares/validators/jobs' const jobsRouter = express.Router() -jobsRouter.get('/', +jobsRouter.get('/:state?', authenticate, ensureUserHasRight(UserRight.MANAGE_JOBS), paginationValidator, @@ -29,18 +28,6 @@ jobsRouter.get('/', asyncMiddleware(listJobs) ) -jobsRouter.get('/:state', - authenticate, - ensureUserHasRight(UserRight.MANAGE_JOBS), - paginationValidator, - jobsSortValidator, - setDefaultSort, - setDefaultPagination, - listJobsValidator, - listJobsStateValidator, - asyncMiddleware(listJobs) -) - // --------------------------------------------------------------------------- export { @@ -50,7 +37,7 @@ export { // --------------------------------------------------------------------------- async function listJobs (req: express.Request, res: express.Response) { - const state = req.params.state as JobState || jobStates + const state = req.params.state as JobState const asc = req.query.sort === 'createdAt' const jobType = req.query.jobType @@ -65,17 +52,22 @@ async function listJobs (req: express.Request, res: express.Response) { const result: ResultList = { total, - data: Array.isArray(state) - ? await Promise.all( - jobs.map(async j => formatJob(j, await j.getState() as JobState)) - ) - : jobs.map(j => formatJob(j, state)) + data: state + ? jobs.map(j => formatJob(j, state)) + : await Promise.all(jobs.map(j => formatJobWithUnknownState(j))) } + return res.json(result) } +async function formatJobWithUnknownState (job: any) { + return formatJob(job, await job.getState()) +} + function formatJob (job: any, state: JobState): Job { - const error = isArray(job.stacktrace) && job.stacktrace.length !== 0 ? job.stacktrace[0] : null + const error = isArray(job.stacktrace) && job.stacktrace.length !== 0 + ? job.stacktrace[0] + : null return { id: job.id, -- cgit v1.2.3