@napp/dti-server
Version:
data transaction interface server library
73 lines (72 loc) • 3.19 kB
JavaScript
;
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 });
exports.BundlerServer = void 0;
const dti_core_1 = require("@napp/dti-core");
class BundlerServer {
constructor(server) {
this.server = server;
this.base62 = new dti_core_1.Base62();
}
action(meta, ctx) {
return __awaiter(this, void 0, void 0, function* () {
let actions = [];
for (let it of meta) {
let action = this.server.getActionByName(it.name);
if (action) {
action.validation(it.param);
// console.log('call', it.name, it.param, await action?.action(it.param, ctx))
actions.push(() => __awaiter(this, void 0, void 0, function* () { return yield (action === null || action === void 0 ? void 0 : action.action(it.param, ctx)); }));
}
else {
throw new Error('not defined action. name=' + it.name);
}
}
return yield Promise.all(actions.map(it => it()));
});
}
setup(expressRoute, setuper) {
if (setuper.factoryBodyparseJson) {
expressRoute.post('/__bundler_post__', setuper.factoryBodyparseJson(), (req, res, next) => __awaiter(this, void 0, void 0, function* () {
try {
let meta = req.body || [];
let result = yield this.action(meta, { req, res });
res.json(result);
}
catch (error) {
next(error);
}
}));
expressRoute.get('/__bundler_get__', (req, res, next) => __awaiter(this, void 0, void 0, function* () {
var _a;
try {
let p = (_a = req.query) === null || _a === void 0 ? void 0 : _a.p;
if (p) {
let json = this.base62.decode(p);
let meta = JSON.parse(json);
let result = yield this.action(meta, { req, res });
res.json(result);
}
else {
res.json([]);
}
}
catch (error) {
next(error);
}
}));
}
else {
throw new Error('not defined server.factoryBodyparseJson');
}
}
}
exports.BundlerServer = BundlerServer;