yf-fpm-server
Version:
yf fast-platform api server
73 lines (59 loc) • 1.84 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
var _exception = require('../utils/exception.js');
var _lodash = require('lodash');
var _lodash2 = _interopRequireDefault(_lodash);
var _debug = require('debug');
var _debug2 = _interopRequireDefault(_debug);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
const debug = (0, _debug2.default)('yf-fpm-server:core.js');
const noMethodHandler = () => {
return Promise.reject(_exception.E.System.NOT_METHOD);
};
const versionUndefinedHandler = () => {
return Promise.reject(_exception.E.System.VERSION_UNDEFINED);
};
let getFunction = (method, v, bizModule) => {
bizModule = bizModule || {};
if (!_lodash2.default.has(bizModule, v)) {
return versionUndefinedHandler;
}
let path = method.split('.');
let obj = bizModule[v];
let handler = noMethodHandler;
let hasFunction = true;
for (let i in path) {
if (!_lodash2.default.has(obj, path[i])) {
hasFunction = false;
break;
}
obj = obj[path[i]];
}
if (hasFunction) {
handler = obj;
}
return handler;
};
exports.default = async (method, args, v, fpm, ctx) => {
let handler = getFunction(method, v, fpm._biz_module);
let hook = fpm._hook;
try {
let result = {};
if (_lodash2.default.isFunction(hook.runHook)) {
let beforeResult = await hook.runHook('before_' + method, args, v, ctx);
result = await handler(args, ctx, beforeResult);
await hook.runHook('after_' + method, { input: args, result: result.data }, v, ctx);
} else {
result = await handler(args, ctx, []);
}
return result;
} catch (err) {
if (err.errno > 0) {
err.errno = 0 - err.errno;
}
debug('Core execute error: %O', err);
return Promise.reject(err);
}
};