UNPKG

@vara/custom-logic-sdk

Version:

Server Side JavaScript SDK for Custom Business Logic

37 lines (29 loc) 1.35 kB
const _ = require('lodash'); const clFnRegistry = require('../services/fn-registry'); const customError = require('../services/custom-error'); const fnExecutorSvc = require('../services/fn-executor-svc'); const ApplicationErrors = require('../constants/application-errors.json'); const logSvc = require('../services/log-svc'); const { ResourceNotFoundError, InternalError } = ApplicationErrors; async function clActionExecutor(req, res, next) { const logPrefix = 'RouteHandler#clActionExecutor'; const clActionName = _.get(req, 'params.name'); const clAction = clFnRegistry.getClAction(clActionName); const logCtx = { clActionName, }; if (!clAction) { const resourceNotFoundErr = customError(ResourceNotFoundError.name, `Custom Logic Action: ${clActionName} was not found`); logSvc.logWarning(resourceNotFoundErr, logCtx, logPrefix); return next(resourceNotFoundErr); } try { const { context, done } = fnExecutorSvc.buildClActionParams(req, res, next); return await fnExecutorSvc.execHandler(clAction.handler, context, done); } catch (err) { const internalErr = customError(InternalError.name, null, { innerError: err }); logSvc.logError(internalErr, logCtx, logPrefix, `Custom Logic Action: ${clActionName} failed;`); return next(internalErr); } } module.exports = clActionExecutor;