odatafy-mongodb
Version:
convert oData requests through odatafy to MongoDB queries
31 lines (30 loc) • 1.25 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateComputeStage = exports.generateComputeStageFromComputedExpr = void 0;
var odatafy_parser_1 = require("odatafy-parser");
var filterGenerator_1 = require("./filterGenerator");
/**
* Generate a MongoDB addFields stage based on an oData compute expression
* @param computedExpr expression of compute parameter
* @returns MongoDB addFields stage
*/
function generateComputeStageFromComputedExpr(computedExpr) {
var ast = odatafy_parser_1.computeParser.parse(computedExpr);
return generateComputeStage(ast);
}
exports.generateComputeStageFromComputedExpr = generateComputeStageFromComputedExpr;
/**
* Generate a MongoDB addFields expression based on the ast of a parsed oData compute expression
* @param ast abstract syntax tree of a parsed oData compute expression
* @returns MongoDB addFields stage
*/
function generateComputeStage(ast) {
var fields = {};
ast.value.forEach(function (itemNode) {
fields[itemNode.computeIdentifier] = (0, filterGenerator_1.processNode)(itemNode.commonExpr, false, { withoutExpr: true });
});
return {
"$addFields": fields
};
}
exports.generateComputeStage = generateComputeStage;