X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;ds=sidebyside;f=server%2Fcontrollers%2Fapi%2Fjobs.ts;h=c61b7362f22a8277bbf5cd49161c5056d836f9ec;hb=1cc9774668827c1255e4cd0775cb781c7f73051c;hp=9e333322b2a479a9c4ffd632c23d35fa0462b09f;hpb=cf21b2cbef61929177b9c09b5e017c3b7eb8535d;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/controllers/api/jobs.ts b/server/controllers/api/jobs.ts index 9e333322b..c61b7362f 100644 --- a/server/controllers/api/jobs.ts +++ b/server/controllers/api/jobs.ts @@ -1,7 +1,5 @@ -import * as express from 'express' -import { ResultList } from '../../../shared' -import { Job, JobState, JobType } from '../../../shared/models' -import { UserRight } from '../../../shared/models/users' +import express from 'express' +import { HttpStatusCode, Job, JobState, JobType, ResultList, UserRight } from '@shared/models' import { isArray } from '../../helpers/custom-validators/misc' import { JobQueue } from '../../lib/job-queue' import { @@ -18,6 +16,18 @@ import { listJobsValidator } from '../../middlewares/validators/jobs' const jobsRouter = express.Router() +jobsRouter.post('/pause', + authenticate, + ensureUserHasRight(UserRight.MANAGE_JOBS), + asyncMiddleware(pauseJobQueue) +) + +jobsRouter.post('/resume', + authenticate, + ensureUserHasRight(UserRight.MANAGE_JOBS), + asyncMiddleware(resumeJobQueue) +) + jobsRouter.get('/:state?', openapiOperationDoc({ operationId: 'getJobs' }), authenticate, @@ -38,6 +48,18 @@ export { // --------------------------------------------------------------------------- +async function pauseJobQueue (req: express.Request, res: express.Response) { + await JobQueue.Instance.pause() + + return res.sendStatus(HttpStatusCode.NO_CONTENT_204) +} + +async function resumeJobQueue (req: express.Request, res: express.Response) { + await JobQueue.Instance.resume() + + return res.sendStatus(HttpStatusCode.NO_CONTENT_204) +} + async function listJobs (req: express.Request, res: express.Response) { const state = req.params.state as JobState const asc = req.query.sort === 'createdAt'