UNPKG

@grouparoo/core

Version:
68 lines (67 loc) 3.23 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.deleteSchedules = exports.loadSchedule = void 0; const codeConfig_1 = require("../../classes/codeConfig"); const filterHelper_1 = require("../filterHelper"); const sequelize_1 = require("sequelize"); const __1 = require("../.."); // configLoader imports need to be from root const deprecation_1 = require("../deprecation"); const configWriter_1 = require("../configWriter"); async function loadSchedule(configObject, externallyValidate, validate = false) { let isNew = false; if (configObject.hasOwnProperty("confirmProfiles")) { deprecation_1.Deprecation.warnChanged("config", "schedule.confirmProfiles", "schedule.confirmRecords"); //@ts-ignore configObject.confirmRecords = configObject["confirmProfiles"]; //@ts-ignore delete configObject["confirmProfiles"]; } (0, codeConfig_1.validateConfigObjectKeys)(__1.Schedule, configObject, ["options", "filters"]); const source = await (0, codeConfig_1.getParentByName)(__1.Source, configObject.sourceId); let schedule = await __1.Schedule.scope(null).findOne({ where: { id: configObject.id, locked: (0, codeConfig_1.getCodeConfigLockKey)() }, }); if (!schedule) { isNew = true; schedule = await __1.Schedule.create({ id: configObject.id, locked: configWriter_1.ConfigWriter.getLockKey(configObject), sourceId: source.id, }); } await schedule.update({ name: configObject.name, recurring: configObject.recurring, incremental: configObject.incremental, recurringFrequency: configObject.recurringFrequency, confirmRecords: configObject.confirmRecords, refreshEnabled: configObject.refreshEnabled, }); const options = (0, codeConfig_1.extractNonNullParts)(configObject, "options"); await schedule.setOptions(options, externallyValidate); if (configObject.filters) { for (const filter of configObject.filters) { if (Object.keys(filterHelper_1.FilterHelper.deprecatedFilters).includes(filter.op)) { throw new Error(`Schedule filter \`${filter.op}\` has been deprecated and replaced with \`${ //@ts-ignore filterHelper_1.FilterHelper.deprecatedFilters[filter.op]}\`. Read more at https://www.grouparoo.com/docs/support/config-files#sources`); } } await schedule.setFilters(configObject.filters, externallyValidate); } await schedule.update({ state: "ready" }); (0, codeConfig_1.logModel)(schedule, validate ? "validated" : isNew ? "created" : "updated"); return { schedule: [schedule.id] }; } exports.loadSchedule = loadSchedule; async function deleteSchedules(ids) { const schedules = await __1.Schedule.scope(null).findAll({ where: { locked: (0, codeConfig_1.getCodeConfigLockKey)(), id: { [sequelize_1.Op.notIn]: ids } }, }); for (const i in schedules) { await schedules[i].destroy(); (0, codeConfig_1.logModel)(schedules[i], "deleted"); } return schedules.map((instance) => instance.id); } exports.deleteSchedules = deleteSchedules;