UNPKG

@grouparoo/core

Version:
88 lines (87 loc) 3.76 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.deleteApps = exports.loadApp = void 0; const codeConfig_1 = require("../../classes/codeConfig"); const __1 = require("../.."); // configLoader imports need to be from root const sequelize_1 = require("sequelize"); const configWriter_1 = require("../configWriter"); const AppRefreshQuery_1 = require("../../models/AppRefreshQuery"); async function loadApp(configObject, externallyValidate, validate = false) { var _a, _b, _c, _d, _e; let isNew = false; (0, codeConfig_1.validateConfigObjectKeys)(__1.App, configObject, ["options", "refresh"]); let app = await __1.App.scope(null).findOne({ where: { id: configObject.id, [sequelize_1.Op.or]: { locked: (0, codeConfig_1.getCodeConfigLockKey)(), state: "deleted", }, }, }); if (!app) { isNew = true; app = await __1.App.create({ id: configObject.id, name: configObject.name, type: configObject.type, }); } await app.update({ type: configObject.type, name: configObject.name, locked: configWriter_1.ConfigWriter.getLockKey(configObject), }); const options = (0, codeConfig_1.extractNonNullParts)(configObject, "options"); if (options) await app.setOptions(options, externallyValidate); if (externallyValidate) { const response = await app.test((0, codeConfig_1.extractNonNullParts)(configObject, "options")); if (!response.success) { throw new Error(`error testing app ${app.name} (${app.id}) - ${response.error}`); } } await app.update({ state: "ready" }); (0, codeConfig_1.logModel)(app, validate ? "validated" : isNew ? "created" : "updated"); if (((_a = configObject.refresh) === null || _a === void 0 ? void 0 : _a.query.length) > 1) { let appRefreshQuery; appRefreshQuery = await AppRefreshQuery_1.AppRefreshQuery.findOne({ where: { appId: configObject.id, }, }); if (!appRefreshQuery) { appRefreshQuery = await AppRefreshQuery_1.AppRefreshQuery.create({ appId: configObject.id, refreshQuery: (_b = configObject.refresh) === null || _b === void 0 ? void 0 : _b.query, recurringFrequency: (_c = configObject.refresh) === null || _c === void 0 ? void 0 : _c.recurringFrequency, locked: configWriter_1.ConfigWriter.getLockKey(configObject), state: "ready", }); isNew = true; } else { await appRefreshQuery.update({ appId: configObject.id, refreshQuery: (_d = configObject.refresh) === null || _d === void 0 ? void 0 : _d.query, recurringFrequency: (_e = configObject.refresh) === null || _e === void 0 ? void 0 : _e.recurringFrequency, locked: configWriter_1.ConfigWriter.getLockKey(configObject), state: "ready", }); } (0, codeConfig_1.logModel)(appRefreshQuery, validate ? "validated" : isNew ? "created" : "updated"); } return { app: [app.id] }; } exports.loadApp = loadApp; async function deleteApps(ids) { const apps = await __1.App.scope(null).findAll({ where: { locked: (0, codeConfig_1.getCodeConfigLockKey)(), id: { [sequelize_1.Op.notIn]: ids } }, }); for (const i in apps) { await apps[i].update({ state: "deleted", locked: null }); (0, codeConfig_1.logModel)(apps[i], "deleted"); } return apps.map((instance) => instance.id); } exports.deleteApps = deleteApps;