Ghost/ghost/job-manager/lib/assemble-bree-job.js

44 lines
1.1 KiB
JavaScript
Raw Normal View History

const isCronExpression = require('./is-cron-expression');
2020-12-09 09:34:04 +03:00
/**
* Creates job Object compatible with bree job definition (https://github.com/breejs/bree#job-options)
*
* @param {String | Date} [at] - Date, cron or human readable schedule format
* @param {Function|String} job - function or path to a module defining a job
* @param {Object} [data] - data to be passed into the job
* @param {String} [name] - job name
*/
const assemble = (at, job, data, name) => {
const breeJob = {
name: name,
// NOTE: both function and path syntaxes work with 'path' parameter
path: job
};
if (data) {
Object.assign(breeJob, {
worker: {
workerData: data
}
});
}
2020-12-09 09:34:04 +03:00
if (at instanceof Date) {
Object.assign(breeJob, {
2020-12-09 09:34:04 +03:00
date: at
});
2020-12-09 09:34:04 +03:00
} else if (at && isCronExpression(at)) {
Object.assign(breeJob, {
2020-12-09 09:34:04 +03:00
cron: at
});
2020-12-09 09:34:04 +03:00
} else if (at !== undefined) {
Object.assign(breeJob, {
2020-12-09 09:34:04 +03:00
interval: at
});
}
return breeJob;
};
module.exports = assemble;