@grouparoo/core
Version:
The Grouparoo Core
45 lines (38 loc) • 1.2 kB
text/typescript
import { log } from "actionhero";
import { Team } from "../models/Team";
import { waitForLock } from "../modules/locks";
import { CLSInitializer } from "../classes/initializers/clsInitializer";
export class TeamPermissions extends CLSInitializer {
constructor() {
super();
this.name = "teamPermissions";
this.startPriority = 2;
}
async updateTeamPermissions(team: Team) {
const { releaseLock } = await waitForLock(
`team:${team.id}:updateTeamPermissions`
);
try {
const permissionsWithStatus = await Team.buildPermissions(team);
permissionsWithStatus.map(({ isNew, permission }) => {
log(
`${isNew ? "Created new" : "Checked"} permission record for team ${
team.name
} @ ${permission.topic}`,
isNew ? "notice" : "debug",
{ read: permission.read, write: permission.write }
);
});
} finally {
releaseLock();
}
}
async initializeWithinTransaction() {}
async startWithinTransaction() {
const teams = await Team.findAll();
for (const i in teams) {
await this.updateTeamPermissions(teams[i]);
}
}
async stopWithinTransaction() {}
}