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() {} }