UNPKG

@grouparoo/core

Version:
45 lines (44 loc) 1.51 kB
"use strict"; 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;