UNPKG

cqrs-eda

Version:

Lightweight CQRS and Event-Driven Architecture library using TypeScript decorators, handlers and typings. Perfect for scalable event-driven apps.

27 lines (26 loc) 706 B
const queryRegistry = new Map(); /** * Decorator to register a class as a Query handler under a unique name. * * @param name Unique identifier for the query. * @throws Error if a query with the given name is already registered. * * @example * ```ts * @Query("GET_USER") * export class GetUserQuery implements IQuery<{ id: number }, User> { * async execute(params) { ... } * } * ``` */ export function Query(name) { return function (target) { if (queryRegistry.has(name)) { throw new Error(`Query with name "${name}" is already registered.`); } queryRegistry.set(name, target); }; } export function getQueryRegistry() { return queryRegistry; }