@mbc-cqrs-serverless/core
Version:
CQRS and event base core
31 lines • 1.06 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.EventHandler = void 0;
require("reflect-metadata");
const ulid_1 = require("ulid");
const constants_1 = require("./constants");
/**
* Decorator that marks a class as an event handler.
* The handler will be invoked when the specified event is published.
*
* @param event - The event class or instance to handle
* @example
* ```typescript
* @EventHandler(OrderCreatedEvent)
* export class OrderCreatedHandler implements IEventHandler<OrderCreatedEvent> {
* async handle(event: OrderCreatedEvent) {
* // Handle the event
* }
* }
* ```
*/
const EventHandler = (event) => {
return (target) => {
if (!Reflect.hasOwnMetadata(constants_1.EVENT_METADATA, event)) {
Reflect.defineMetadata(constants_1.EVENT_METADATA, { id: (0, ulid_1.ulid)() }, event);
}
Reflect.defineMetadata(constants_1.EVENT_HANDLER_METADATA, event, target);
};
};
exports.EventHandler = EventHandler;
//# sourceMappingURL=event-handler.decorator.js.map