@grouparoo/core
Version:
The Grouparoo Core
45 lines (44 loc) • 1.51 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ScheduleRun = void 0;
const Schedule_1 = require("../../models/Schedule");
const Run_1 = require("../../models/Run");
const retryableTask_1 = require("../../classes/tasks/retryableTask");
class ScheduleRun extends retryableTask_1.RetryableTask {
constructor() {
super(...arguments);
this.name = "schedule:run";
this.description = "run a schedule and import and export data";
this.frequency = 0;
this.queue = "schedules";
this.inputs = {
runId: { required: true },
};
}
async runWithinTransaction({ runId }) {
const run = await Run_1.Run.scope(null).findOne({ where: { id: runId } });
if (!run)
return;
const schedule = await Schedule_1.Schedule.findOne({
where: { id: run.creatorId },
});
if (!schedule)
return;
if (schedule.state !== "ready") {
throw new Error(`schedule ${run.creatorId} is not ready`);
}
const response = await schedule.run(run);
await run.update({
highWaterMark: response.highWaterMark,
sourceOffset: response.sourceOffset,
});
if (response.importsCount === 0) {
await run.afterBatch("complete");
}
else {
await run.afterBatch();
}
return response.importsCount;
}
}
exports.ScheduleRun = ScheduleRun;