first commit
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
import { IQueryHandler, QueryHandler } from '@nestjs/cqrs';
|
||||
import { IssueReadModel } from '@task-stream/api/tracker/domain';
|
||||
import { FindIssuesRepository } from '../ports/find-issues.repository';
|
||||
import { FindProjectsRepository } from '../ports/find-projects.repository';
|
||||
import { GetIssuesByIdsQuery } from './get-issues-by-ids.query';
|
||||
|
||||
@QueryHandler(GetIssuesByIdsQuery)
|
||||
export class GetIssuesByIdsQueryHandler
|
||||
implements IQueryHandler<GetIssuesByIdsQuery, IssueReadModel[]>
|
||||
{
|
||||
constructor(
|
||||
private readonly findIssues: FindIssuesRepository,
|
||||
private readonly findProjects: FindProjectsRepository,
|
||||
) {}
|
||||
|
||||
async execute(query: GetIssuesByIdsQuery): Promise<IssueReadModel[]> {
|
||||
const issues = await this.findIssues.findByIds([...new Set(query.ids)]);
|
||||
const visible = new Set(
|
||||
(await this.findProjects.findByMember(query.viewerId)).map((p) => p.id),
|
||||
);
|
||||
return issues.filter((issue) => visible.has(issue.projectId));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user