@openinc/parse-server-opendash
Version:
Parse Server Cloud Code for open.INC Stack.
55 lines (54 loc) • 2.13 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.init = init;
const __1 = require("..");
const types_1 = require("../types");
async function init() {
(0, __1.beforeSaveHook)(types_1.Maintenance_Schedule_Template, async (request) => {
const { object, original, user } = request;
await (0, __1.defaultHandler)(request);
await (0, __1.defaultAclHandler)(request);
});
(0, __1.afterSaveHook)(types_1.Maintenance_Schedule_Template, async (request) => {
const { object, original, user } = request;
if (object)
await createSchedulesWithTemplate(object);
});
(0, __1.beforeDeleteHook)(types_1.Maintenance_Schedule_Template, async (request) => {
const { object, original, user } = request;
});
(0, __1.afterDeleteHook)(types_1.Maintenance_Schedule_Template, async (request) => {
const { object, original, user } = request;
});
}
/**
* Creates schedules based on the provided template.
* @param template the maintenance schedule template
*/
async function createSchedulesWithTemplate(template) {
// find existing schedules based on the template
const matchingSchedules = await new Parse.Query(types_1.Maintenance_Schedule)
.equalTo("template", template)
.include("source")
.findAll({ useMasterKey: true });
const sourcesInRelation = await template
.relation("sources")
.query()
.findAll({ useMasterKey: true });
for (const source of sourcesInRelation) {
if (matchingSchedules.some((s) => s.get("source")?.id === source.id))
continue;
const title = `${source.get("name")} - ${template.get("title")}`;
const newSchedule = new types_1.Maintenance_Schedule({
title,
template,
source: source,
description: template.get("description"),
color: template.get("color"),
cron: undefined,
enabled: true,
tenant: template.get("tenant"),
});
await newSchedule.save(null, { useMasterKey: true });
}
}