23 lines
478 B
TypeScript
23 lines
478 B
TypeScript
/**
|
|
* Base Domain Event
|
|
*
|
|
* Abstract base class for all domain events.
|
|
*/
|
|
|
|
import { v4 as uuidv4 } from 'uuid';
|
|
|
|
export abstract class DomainEvent {
|
|
public readonly eventId: string;
|
|
public readonly occurredAt: Date;
|
|
|
|
constructor() {
|
|
this.eventId = uuidv4();
|
|
this.occurredAt = new Date();
|
|
}
|
|
|
|
abstract get eventType(): string;
|
|
abstract get aggregateId(): string;
|
|
abstract get aggregateType(): string;
|
|
abstract get payload(): Record<string, unknown>;
|
|
}
|