UNPKG

@elsikora/nestjs-crud-automator

Version:

A library for automating the creation of CRUD operations in NestJS.

53 lines (49 loc) 2.77 kB
'use strict'; var controller_constant = require('../../../constant/decorator/api/controller.constant.js'); var service_constant = require('../../../constant/decorator/api/service.constant.js'); var capitalizeString_utility = require('../../../utility/capitalize-string.utility.js'); var logger_utility = require('../../../utility/logger.utility.js'); var registry_class = require('./registry.class.js'); const subscriberLogger = logger_utility.LoggerUtility.getLogger("ApiSubscriberExecutor"); class ApiSubscriberExecutor { static async executeFunctionSubscribers(constructor, entity, functionType, onType, context, error) { if (!Reflect.hasMetadata(service_constant.SERVICE_API_DECORATOR_CONSTANT.OBSERVABLE_METADATA_KEY, constructor)) { return context.result; } const subscribers = registry_class.apiSubscriberRegistry.getFunctionSubscribers(entity.constructor.name); let result = context.result; for (const subscriber of subscribers) { const hookName = `on${onType}${capitalizeString_utility.CapitalizeString(functionType)}`; const hook = subscriber[hookName]; if (typeof hook === "function") { subscriberLogger.verbose(`Executing function hook ${hookName} from ${subscriber.constructor.name} for entity ${entity.constructor.name}`); const hookResult = (await hook.call(subscriber, { ...context, result }, error)); if (hookResult !== undefined) { result = hookResult; } } } return result; } static async executeRouteSubscribers(constructor, entity, routeType, onType, context, error) { if (!Reflect.hasMetadata(controller_constant.CONTROLLER_API_DECORATOR_CONSTANT.OBSERVABLE_METADATA_KEY, constructor)) { return context.result; } const subscribers = registry_class.apiSubscriberRegistry.getRouteSubscribers(entity.constructor.name); let result = context.result; for (const subscriber of subscribers) { const hookName = `on${onType}${capitalizeString_utility.CapitalizeString(routeType)}`; const hook = subscriber[hookName]; if (typeof hook === "function") { subscriberLogger.verbose(`Executing route hook ${hookName} from ${subscriber.constructor.name} for entity ${entity.constructor.name}`); const hookResult = (await hook.call(subscriber, { ...context, result }, error)); if (hookResult !== undefined) { result = hookResult; } } } return result; } } exports.ApiSubscriberExecutor = ApiSubscriberExecutor; //# sourceMappingURL=executor.class.js.map