first commit
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
import { EventsHandler, IEventHandler } from '@nestjs/cqrs';
|
||||
import { ReleaseUpdatedEvent } from '@task-stream/api/tracker/domain';
|
||||
import { UpsertMaterializedIssueRepository } from '../ports/upsert-materialized-issue.repository';
|
||||
import { UpsertMaterializedReleaseRepository } from '../ports/upsert-materialized-release.repository';
|
||||
import { ReadModelNotifier, versionOf } from './read-model-notifier';
|
||||
|
||||
@EventsHandler(ReleaseUpdatedEvent)
|
||||
export class ReleaseUpdatedEventHandler
|
||||
implements IEventHandler<ReleaseUpdatedEvent>
|
||||
{
|
||||
constructor(
|
||||
private readonly upsertMaterializedReleaseRepository: UpsertMaterializedReleaseRepository,
|
||||
private readonly upsertMaterializedIssueRepository: UpsertMaterializedIssueRepository,
|
||||
private readonly notifier: ReadModelNotifier,
|
||||
) {}
|
||||
|
||||
async handle(event: ReleaseUpdatedEvent) {
|
||||
await this.upsertMaterializedReleaseRepository.upsert({
|
||||
id: event.aggregateId,
|
||||
...event.changes,
|
||||
version: versionOf(event),
|
||||
});
|
||||
if (event.changes.name) {
|
||||
await this.upsertMaterializedIssueRepository.renameRelease(
|
||||
event.aggregateId,
|
||||
event.changes.name,
|
||||
);
|
||||
}
|
||||
await this.notifier.release(event.aggregateId, event);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user