import { CommandHandler, ICommandHandler } from '@nestjs/cqrs'; import { CommandResult, ack } from './command-result'; import { ChangeIssueStatusCommand } from './change-issue-status.command'; import { WriteAccess } from './write-access'; @CommandHandler(ChangeIssueStatusCommand) export class ChangeIssueStatusCommandHandler implements ICommandHandler { constructor(private readonly access: WriteAccess) {} async execute(command: ChangeIssueStatusCommand): Promise { const { issue, project } = await this.access.issueForContributor( command.issueId, command.actorId, ); issue.changeStatus( command.actorId, command.status, command.reason, project.workflow, ); await issue.commitAndWait(); return ack(issue); } }