cqrs-eda
Version:
Lightweight CQRS and Event-Driven Architecture library using TypeScript decorators, handlers and typings. Perfect for scalable event-driven apps.
31 lines (30 loc) • 837 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Query = Query;
exports.getQueryRegistry = getQueryRegistry;
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) { ... }
* }
* ```
*/
function Query(name) {
return function (target) {
if (queryRegistry.has(name)) {
throw new Error(`Query with name "${name}" is already registered.`);
}
queryRegistry.set(name, target);
};
}
function getQueryRegistry() {
return queryRegistry;
}