UNPKG

@sap/xsodata

Version:

Expose data from a HANA database as OData V2 service with help of .xsodata files.

39 lines (26 loc) 909 B
'use strict'; var Http400_BadRequest= require('../../utils/errors/http/badRequest'); module.exports = function checkFilterOnAggregatedColumn(context, callback) { var aggs = context.oData.dbSegmentLast.entityType.getAggregates(); var filter = context.oData.systemQueryParameters.filter; if (aggs.length === 0 || !filter){ return callback(null, context); } if(check(aggs, filter)){ return callback(createError(), context); } return callback(null, context); }; function createError() { var errorMessage = '$filter is not allowed for aggregated columns.'; return new Http400_BadRequest(errorMessage); } function check(aggs, type){ var violation = aggs.some(function(agg){ return agg.column === type.property; }); if (!violation){ violation = type.getChildren().some(check.bind(null, aggs)); } return violation; }