@grouparoo/core
Version:
The Grouparoo Core
59 lines (58 loc) • 2.39 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ScheduleEnqueueRuns = void 0;
const actionhero_1 = require("actionhero");
const Schedule_1 = require("../../models/Schedule");
const clsTask_1 = require("../../classes/tasks/clsTask");
const apiData_1 = require("../../modules/apiData");
const runMode_1 = require("../../modules/runMode");
class ScheduleEnqueueRuns extends clsTask_1.CLSTask {
constructor() {
super(...arguments);
this.name = "schedules:enqueueRuns";
this.description = "check all schedules and run them if it is time";
this.frequency = (0, runMode_1.getGrouparooRunMode)() === "cli:run" ? 0 : 1000 * 60; // Run every minute
this.queue = "schedules";
this.inputs = {
ignoreDeltas: {
required: false,
default: false,
formatter: apiData_1.APIData.ensureBoolean,
},
runIfNotRecurring: {
required: false,
default: false,
formatter: apiData_1.APIData.ensureBoolean,
},
scheduleIds: {
required: false,
formatter: apiData_1.APIData.ensureArray,
},
};
}
async runWithinTransaction(params) {
const ignoreDeltas = params.ignoreDeltas === undefined ? false : params.ignoreDeltas;
const runIfNotRecurring = params.runIfNotRecurring === undefined ? false : params.runIfNotRecurring;
const where = {};
if (params.scheduleIds)
where.id = params.scheduleIds;
const schedules = await Schedule_1.Schedule.findAll({ where });
const enqueuedSchedules = [];
for (const schedule of schedules) {
const shouldRun = await schedule.shouldRun({
ignoreDeltas,
runIfNotRecurring,
});
if (shouldRun) {
await schedule.enqueueRun();
enqueuedSchedules.push(schedule);
}
}
if (enqueuedSchedules.length) {
(0, actionhero_1.log)(`Enqueued Runs for Schedules: ${enqueuedSchedules
.map((s) => `${s.name} (${s.id})`)
.join(", ")}`, (0, runMode_1.getGrouparooRunMode)() === "cli:run" ? "notice" : "info");
}
}
}
exports.ScheduleEnqueueRuns = ScheduleEnqueueRuns;