37 lines
832 B
TypeScript
37 lines
832 B
TypeScript
import { DomainEvent } from './domain-event.base';
|
|
import { ReportType } from '../value-objects/report-type.enum';
|
|
import { ReportPeriod } from '../value-objects/report-period.enum';
|
|
|
|
export interface SnapshotCreatedPayload {
|
|
snapshotId: string;
|
|
reportType: ReportType;
|
|
reportCode: string;
|
|
reportPeriod: ReportPeriod;
|
|
periodKey: string;
|
|
rowCount: number;
|
|
periodStartAt: Date;
|
|
periodEndAt: Date;
|
|
}
|
|
|
|
export class SnapshotCreatedEvent extends DomainEvent {
|
|
constructor(private readonly payload: SnapshotCreatedPayload) {
|
|
super();
|
|
}
|
|
|
|
get eventType(): string {
|
|
return 'SnapshotCreated';
|
|
}
|
|
|
|
get aggregateId(): string {
|
|
return this.payload.snapshotId;
|
|
}
|
|
|
|
get aggregateType(): string {
|
|
return 'ReportSnapshot';
|
|
}
|
|
|
|
toPayload(): SnapshotCreatedPayload {
|
|
return { ...this.payload };
|
|
}
|
|
}
|