Files
task-stream/libs/api/tracker/application/src/lib/event-handlers/release-shipped.event-handler.ts
2026-10-03 13:40:26 +02:00

28 lines
934 B
TypeScript

import { EventsHandler, IEventHandler } from '@nestjs/cqrs';
import {
ReleaseShippedEvent,
ReleaseStatus,
} from '@task-stream/api/tracker/domain';
import { UpsertMaterializedReleaseRepository } from '../ports/upsert-materialized-release.repository';
import { ReadModelNotifier, versionOf } from './read-model-notifier';
@EventsHandler(ReleaseShippedEvent)
export class ReleaseShippedEventHandler
implements IEventHandler<ReleaseShippedEvent>
{
constructor(
private readonly upsertMaterializedReleaseRepository: UpsertMaterializedReleaseRepository,
private readonly notifier: ReadModelNotifier,
) {}
async handle(event: ReleaseShippedEvent) {
await this.upsertMaterializedReleaseRepository.upsert({
id: event.aggregateId,
status: ReleaseStatus.RELEASED,
releasedAt: event.occurredAt,
version: versionOf(event),
});
await this.notifier.release(event.aggregateId, event);
}
}