UNPKG

@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
"use strict"; 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