@sap/xsodata
Version:
Expose data from a HANA database as OData V2 service with help of .xsodata files.
39 lines (26 loc) • 909 B
JavaScript
;
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;
}