@sap-cloud-sdk/odata-common
Version:
SAP Cloud SDK for JavaScript common functions of OData client generator and OpenAPI clint generator.
46 lines • 1.62 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getOrderBy = getOrderBy;
const order_1 = require("../order");
/**
* Get an object containing the given order bys as query parameter, or an empty object if none was given.
* @typeParam EntityT - Type of the entity to order
* @param orderBy - A list of orderables to get the query parameters for
* @returns An object containing the query parameter or an empty object
* @internal
*/
function getOrderBy(orderBy) {
if (typeof orderBy !== 'undefined' && orderBy.length) {
return {
orderby: getODataOrderByExpressions(orderBy).join(',')
};
}
return {};
}
function getODataOrderByExpressions(orderBys, parentFieldNames = []) {
return orderBys.reduce((expressions, orderBy) => {
if (orderBy instanceof order_1.OrderLink) {
return [
...expressions,
getOrderByExpressionForOrderLink(orderBy, [...parentFieldNames])
];
}
return [
...expressions,
getOrderByExpressionForOrder(orderBy, parentFieldNames)
];
}, []);
}
function getOrderByExpressionForOrderLink(orderBy, parentFieldNames = []) {
return getODataOrderByExpressions(orderBy.orderBy, [
...parentFieldNames,
orderBy.link._fieldName
]).join(',');
}
function getOrderByExpressionForOrder(orderBy, parentFieldNames = []) {
return [
[...parentFieldNames, orderBy._fieldName].join('/'),
orderBy.orderType
].join(encodeURIComponent(' '));
}
//# sourceMappingURL=get-orderby.js.map