@sap/xsodata
Version:
Expose data from a HANA database as OData V2 service with help of .xsodata files.
45 lines (31 loc) • 1.16 kB
JavaScript
;
var Http400_BadRequest= require('../../utils/errors/http/badRequest');
module.exports = function checkFilterOrderByOnGenKeyColumn(context, callback) {
var genKey;
if(context.oData.dbSegmentLast.entityType.hasGeneratedKey()){
genKey = context.oData.dbSegmentLast.entityType.keys.generatedKey;
}
var filter = context.oData.systemQueryParameters.filter;
var orderBy = context.oData.systemQueryParameters.orderby;
if (!genKey || (!filter && !orderBy)){
return callback(null, context);
}
if(filter && check(genKey, filter)){
return callback(createError('filter'), context);
}
if(orderBy && check(genKey, orderBy)){
return callback(createError('orderby'), context);
}
return callback(null, context);
};
function createError(sqo) {
var errorMessage = '$' + sqo + ' is not allowed for generated key columns.';
return new Http400_BadRequest(errorMessage);
}
function check(genKey, type){
var violation = genKey === type.property;
if (!violation){
violation = type.getChildren().some(check.bind(null, genKey));
}
return violation;
}