@grouparoo/core
Version:
The Grouparoo Core
47 lines (46 loc) • 1.95 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.deleteTeams = exports.loadTeam = void 0;
const codeConfig_1 = require("../../classes/codeConfig");
const __1 = require("../.."); // configLoader imports need to be from root
const sequelize_1 = require("sequelize");
async function loadTeam(configObject, externallyValidate, validate = false) {
let isNew = false;
(0, codeConfig_1.validateConfigObjectKeys)(__1.Team, configObject, ["options", "permissions"]);
let team = await __1.Team.scope(null).findOne({
where: { locked: (0, codeConfig_1.getCodeConfigLockKey)(), id: configObject.id },
});
if (!team) {
isNew = true;
team = await __1.Team.create({
id: configObject.id,
locked: (0, codeConfig_1.getCodeConfigLockKey)(),
name: configObject.name,
});
}
await team.update({ name: configObject.name });
if (configObject.options) {
await team.update({
permissionAllRead: configObject.options.permissionAllRead,
permissionAllWrite: configObject.options.permissionAllWrite,
});
}
if (configObject.permissions) {
await team.setPermissions(configObject.permissions);
}
await __1.Permission.update({ locked: (0, codeConfig_1.getCodeConfigLockKey)() }, { where: { ownerId: team.id } });
(0, codeConfig_1.logModel)(team, validate ? "validated" : isNew ? "created" : "updated");
return { team: [team.id] };
}
exports.loadTeam = loadTeam;
async function deleteTeams(ids) {
const teams = await __1.Team.scope(null).findAll({
where: { locked: (0, codeConfig_1.getCodeConfigLockKey)(), id: { [sequelize_1.Op.notIn]: ids } },
});
for (const i in teams) {
await teams[i].destroy();
(0, codeConfig_1.logModel)(teams[i], "deleted");
}
return teams.map((instance) => instance.id);
}
exports.deleteTeams = deleteTeams;