import { CommandHandler, ICommandHandler } from '@nestjs/cqrs'; import { AddProjectMemberCommand } from './add-project-member.command'; import { CommandResult, ack } from './command-result'; import { WriteAccess } from './write-access'; @CommandHandler(AddProjectMemberCommand) export class AddProjectMemberCommandHandler implements ICommandHandler { constructor(private readonly access: WriteAccess) {} async execute(command: AddProjectMemberCommand): Promise { const project = await this.access.project(command.projectId); await this.access.assertKnownActiveUser( command.userId, command.accessToken, ); project.addMember(command.actorId, command.userId, command.role); await project.commitAndWait(); return ack(project); } }