UNPKG

@grouparoo/core

Version:
62 lines (61 loc) 2.42 kB
"use strict"; 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;