UNPKG

@sap-cloud-sdk/core

Version:
55 lines 2.36 kB
"use strict"; 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