UNPKG

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