import { CommandHandler, ICommandHandler } from '@nestjs/cqrs'; import { Issue, Project } from '@task-stream/api/tracker/domain'; import { DropLinksToIssueCommand } from './drop-links-to-issue.command'; import { WriteAccess } from './write-access'; @CommandHandler(DropLinksToIssueCommand) export class DropLinksToIssueCommandHandler implements ICommandHandler { constructor(private readonly access: WriteAccess) {} async execute(command: DropLinksToIssueCommand): Promise { const issue = await this.access.live(command.issueId, Issue); // Gone, or about to be (its project was deleted too): nothing to tidy. if (!issue || !(await this.access.live(issue.projectId, Project))) return; issue.unlinkAllTo(command.actorId, command.targetIssueId); await issue.commitAndWait(); } }