import { IQueryHandler, QueryHandler } from '@nestjs/cqrs'; import { ActivityReadModel } from '@task-stream/api/tracker/domain'; import { FindActivityRepository } from '../ports/find-activity.repository'; import { ReadAccess } from './read-access'; import { GetActivityQuery } from './get-activity.query'; @QueryHandler(GetActivityQuery) export class GetActivityQueryHandler implements IQueryHandler { constructor( private readonly findActivity: FindActivityRepository, private readonly access: ReadAccess, ) {} async execute(query: GetActivityQuery): Promise { await this.access.assertCanView(query.projectId, query.viewerId); return this.findActivity.find({ projectId: query.projectId, issueId: query.issueId, limit: Math.min(query.limit, 200), before: query.before, }); } }