odatafy-mongodb
Version:
convert oData requests through odatafy to MongoDB queries
30 lines (29 loc) • 1.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateSortStage = exports.generateSortFromOrderbyExpr = void 0;
var odatafy_parser_1 = require("odatafy-parser");
/**
* Get MongoDB sort stage based on an oData url orderby expression
* @param expr expression from url
* @returns MongoDB sort stage
*/
function generateSortFromOrderbyExpr(expr) {
var ast = odatafy_parser_1.orderbyParser.parse(expr);
return generateSortStage(ast);
}
exports.generateSortFromOrderbyExpr = generateSortFromOrderbyExpr;
/**
* Get MongoDB sort stage based on the syntax tree of an oData orderby expression
* @param ast abstract syntax tree of the parsed orderby expression
* @returns MongoDB sort stage
*/
function generateSortStage(ast) {
var result = {
'$sort': {}
};
ast.value.forEach(function (node) {
result.$sort[node.value] = node.type == odatafy_parser_1.OrderDirection.Asc ? 1 : -1;
});
return result;
}
exports.generateSortStage = generateSortStage;