@cashfarm/plow
Version:
Library for validating input data and parameters
39 lines (38 loc) • 1.4 kB
TypeScript
import { Guid } from '@cashfarm/lang';
import { Identity, IDomainEvent } from '../domain';
import { IESAggregateRoot } from './esAggregateRoot';
export interface IEventEnvelope {
readonly id: Guid;
readonly aggregateType: string;
readonly aggregateId: Identity<any>;
readonly aggregateVersion: number;
/**
* Fully Qualified Event Name
*
* format: "[package].[class]"
*
* @type {string}
* @memberof IEventEnvelope
*/
readonly eventType: string;
readonly event: Object;
readonly metadata?: Object;
readonly createdAt: Date;
}
/**
* This class wraps an event to allow it to be searchable by the aggregate id, type or event type.
*
* This is very useful when the event is stored on a database or event store
*/
export declare class EventEnvelope implements IEventEnvelope {
readonly id: Guid;
readonly aggregateType: string;
readonly aggregateId: Identity<any>;
readonly aggregateVersion: number;
readonly eventType: string;
readonly event: IDomainEvent;
readonly metadata: Object;
readonly createdAt: Date;
constructor(id: Guid, aggregateType: string, aggregateId: Identity<any>, aggregateVersion: number, eventType: string, event: IDomainEvent, metadata?: Object, createdAt?: Date);
static wrap(aggt: IESAggregateRoot<any>, event: IDomainEvent, metadata?: Object): EventEnvelope;
}