@cashfarm/plow
Version:
Library for validating input data and parameters
25 lines • 1.09 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const lang_1 = require("@cashfarm/lang");
/**
* 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
*/
class EventEnvelope {
constructor(id, aggregateType, aggregateId, aggregateVersion, eventType, event, metadata, createdAt) {
this.id = id;
this.aggregateType = aggregateType;
this.aggregateId = aggregateId;
this.aggregateVersion = aggregateVersion;
this.eventType = eventType;
this.event = event;
this.metadata = metadata;
this.createdAt = createdAt || new Date();
}
static wrap(aggt, event, metadata) {
return new EventEnvelope(new lang_1.Guid(), String(Reflect.getMetadata(Symbol.for('FQN'), aggt)), aggt.id, aggt.version, String(Reflect.getMetadata(Symbol.for('FQN'), event)), event, metadata, new Date());
}
}
exports.EventEnvelope = EventEnvelope;
//# sourceMappingURL=eventEnvelope.js.map