@grouparoo/core
Version:
The Grouparoo Core
62 lines (61 loc) • 2.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.RunModel = void 0;
const actionhero_1 = require("actionhero");
const Run_1 = require("../../models/Run");
const GrouparooRecord_1 = require("../../models/GrouparooRecord");
const RecordProperty_1 = require("../../models/RecordProperty");
const clsTask_1 = require("../../classes/tasks/clsTask");
const GroupMember_1 = require("../../models/GroupMember");
const group_1 = require("../../modules/ops/group");
const modelsCache_1 = require("../../modules/caches/modelsCache");
class RunModel extends clsTask_1.CLSTask {
constructor() {
super(...arguments);
this.name = "grouparooModel:run";
this.description = "build imports that will check and sync all records of this model";
this.frequency = 0;
this.queue = "runs";
this.inputs = {
runId: { required: true },
};
}
async runWithinTransaction({ runId }) {
const run = await Run_1.Run.scope(null).findOne({ where: { id: runId } });
if (!run)
return;
if (run.state === "stopped")
return;
const offset = run.memberOffset || 0;
const limit = run.memberLimit || actionhero_1.config.batchSize.imports;
const model = await modelsCache_1.ModelsCache.findOneWithCache(run.creatorId);
if (!model)
return;
const records = await GrouparooRecord_1.GrouparooRecord.findAll({
where: { modelId: model.id },
order: [["createdAt", "asc"]],
include: [RecordProperty_1.RecordProperty, GroupMember_1.GroupMember],
limit,
offset,
});
if (records.length > 0) {
await group_1.GroupOps.updateRecords(records.map((r) => r.id), "run", run.id, run.destinationId);
}
await run.update({
memberLimit: limit,
memberOffset: offset + records.length,
});
const pendingImports = await run.$count("imports", {
where: { state: "importing" },
});
// we don't want to denote the run as ready until all the imports are imported
if (records.length === 0 && pendingImports === 0) {
await run.afterBatch("complete");
}
else {
await run.afterBatch();
}
return records.length;
}
}
exports.RunModel = RunModel;