@grouparoo/core
Version:
The Grouparoo Core
68 lines (67 loc) • 3.23 kB
JavaScript
;
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;