import { IQueryHandler, Query, QueryHandler } from '@nestjs/cqrs'; import { IssueReadModel } from '@task-stream/api/tracker/domain'; import { FindIssuesRepository } from '../ports/find-issues.repository'; import { ReadAccess } from './read-access'; /** A project's tickets in the trash, newest first. */ export class GetTrashQuery extends Query { constructor( public readonly viewerId: string | null, public readonly projectId: string, ) { super(); } } @QueryHandler(GetTrashQuery) export class GetTrashQueryHandler implements IQueryHandler { constructor( private readonly findIssues: FindIssuesRepository, private readonly access: ReadAccess, ) {} async execute(query: GetTrashQuery): Promise { await this.access.assertSeesWholeProject(query.projectId, query.viewerId); return this.findIssues.findTrashed(query.projectId); } }