UNPKG

mission.core

Version:
54 lines (53 loc) 2.54 kB
"use strict"; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const bo_registry_decorator_1 = require("../database/bo-registry.decorator"); const util_1 = require("./util"); class FacadeBusiness { static getData(req, res, next) { return __awaiter(this, void 0, void 0, function* () { const reqs = req.body; const collection = yield Promise.all(reqs.map((fReq) => __awaiter(this, void 0, void 0, function* () { const route = FacadeBusiness.parseRoute(fReq.route); const func = bo_registry_decorator_1.BoRegistry[route.BoName]; if (typeof func === 'undefined') { throw new Error(route.BoName + ' not register in BoRegistry'); } const bo = func(); return yield FacadeBusiness.invoke(bo, route, fReq); }))); return util_1.Util.arrayOfObjectToObject(collection); }); } static invoke(bo, route, fReq) { return __awaiter(this, void 0, void 0, function* () { let res; let error; const api = bo[route.MethodName]; if (typeof api === 'undefined') { error = new Error(route.MethodName + ' is not available in ' + route.BoName); } if (!error) { res = yield api.bind(bo)(fReq.request) .catch((err) => error = err); } return { [fReq.key]: util_1.Util.getResponse(res, fReq.request.pageContext, error) }; }); } static parseRoute(route) { const r = route.split('/'); if (r.length < 2 || r.length > 2) { throw new Error('Request contains improper route'); } return { BoName: r[0], MethodName: r[1] }; } } exports.FacadeBusiness = FacadeBusiness;