@sap-cloud-sdk/core
Version:
SAP Cloud SDK for JavaScript core
55 lines • 2.36 kB
JavaScript
var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
if (ar || !(i in from)) {
if (!ar) ar = Array.prototype.slice.call(from, 0, i);
ar[i] = from[i];
}
}
return to.concat(ar || Array.prototype.slice.call(from));
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getOrderBy = void 0;
var 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
*/
function getOrderBy(orderBy) {
if (typeof orderBy !== 'undefined' && orderBy.length) {
return {
orderby: getODataOrderByExpressions(orderBy).join(',')
};
}
return {};
}
exports.getOrderBy = getOrderBy;
function getODataOrderByExpressions(orderBys, parentFieldNames) {
if (parentFieldNames === void 0) { parentFieldNames = []; }
return orderBys.reduce(function (expressions, orderBy) {
if (orderBy instanceof order_1.OrderLink) {
return __spreadArray(__spreadArray([], expressions, true), [
getOrderByExpressionForOrderLink(orderBy, __spreadArray([], parentFieldNames, true))
], false);
}
return __spreadArray(__spreadArray([], expressions, true), [
getOrderByExpressionForOrder(orderBy, parentFieldNames)
], false);
}, []);
}
function getOrderByExpressionForOrderLink(orderBy, parentFieldNames) {
if (parentFieldNames === void 0) { parentFieldNames = []; }
return getODataOrderByExpressions(orderBy.orderBy, __spreadArray(__spreadArray([], parentFieldNames, true), [
orderBy.link._fieldName
], false)).join(',');
}
function getOrderByExpressionForOrder(orderBy, parentFieldNames) {
if (parentFieldNames === void 0) { parentFieldNames = []; }
return [
__spreadArray(__spreadArray([], parentFieldNames, true), [orderBy._fieldName], false).join('/'),
orderBy.orderType
].join(encodeURIComponent(' '));
}
//# sourceMappingURL=get-orderby.js.map
;