payload
Version:
Node, React, Headless CMS and Application Framework built on Next.js
79 lines (78 loc) • 2.34 kB
JavaScript
// @ts-strict-ignore
import { runJobs } from './operations/runJobs/index.js';
const configHasJobs = (config)=>{
if (!config.jobs) {
return false;
}
if (config.jobs.tasks.length > 0) {
return true;
}
if (Array.isArray(config.jobs.workflows) && config.jobs.workflows.length > 0) {
return true;
}
return false;
};
export const runJobsEndpoint = {
handler: async (req)=>{
if (!configHasJobs(req.payload.config)) {
return Response.json({
message: 'No jobs to run.'
}, {
status: 200
});
}
const hasAccess = await req.payload.config.jobs.access.run({
req
});
if (!hasAccess) {
return Response.json({
message: req.i18n.t('error:unauthorized')
}, {
status: 401
});
}
const { limit, queue } = req.query;
const runJobsArgs = {
queue: 'default',
req,
// We are checking access above, so we can override it here
overrideAccess: true
};
if (typeof queue === 'string') {
runJobsArgs.queue = queue;
}
if (typeof limit !== 'undefined') {
runJobsArgs.limit = Number(limit);
}
let noJobsRemaining = false;
let remainingJobsFromQueried = 0;
try {
const result = await runJobs(runJobsArgs);
noJobsRemaining = result.noJobsRemaining;
remainingJobsFromQueried = result.remainingJobsFromQueried;
} catch (err) {
req.payload.logger.error({
err,
msg: 'There was an error running jobs:',
queue: runJobsArgs.queue
});
return Response.json({
message: req.i18n.t('error:unknown'),
noJobsRemaining: true,
remainingJobsFromQueried
}, {
status: 500
});
}
return Response.json({
message: req.i18n.t('general:success'),
noJobsRemaining,
remainingJobsFromQueried
}, {
status: 200
});
},
method: 'get',
path: '/run'
};
//# sourceMappingURL=restEndpointRun.js.map