import { CommandRunner } from '@task-stream/api/shared/application'; import { Injectable } from '@nestjs/common'; import { QueryBus } from '@nestjs/cqrs'; import { IssueReadModel } from '@task-stream/api/tracker/domain'; import { GetMyPinsQuery, IsIssuePinnedQuery, PinIssueCommand, } from './saved-filters/pins'; /** Pinned tickets: the few someone keeps at hand, across projects. */ @Injectable() export class PinsService { constructor( private readonly commands: CommandRunner, private readonly queryBus: QueryBus, ) {} /** Mine, most recently pinned first. */ mine(ownerId: string): Promise { return this.queryBus.execute(new GetMyPinsQuery(ownerId)); } isPinned(ownerId: string, issueId: string): Promise { return this.queryBus.execute(new IsIssuePinnedQuery(ownerId, issueId)); } pin(ownerId: string, issueId: string, pinned: boolean): Promise { return this.commands.execute(new PinIssueCommand(ownerId, issueId, pinned)); } }