rwadurian/backend/services/mpc-service/src/domain/events/domain-event.base.ts

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>;
}