UNPKG

@sap/xsodata

Version:

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

45 lines (32 loc) 1.19 kB
'use strict'; const Http400_BadRequest = require('../../utils/errors/http/badRequest'); module.exports = function checkFilterOrderByOnGenKeyColumn(context, callback) { let genKey; if (context.oData.dbSegmentLast.entityType.hasGeneratedKey()) { genKey = context.oData.dbSegmentLast.entityType.keys.generatedKey; } const filter = context.oData.systemQueryParameters.filter; const 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) { const errorMessage = '$' + sqo + ' is not allowed for generated key columns.'; return new Http400_BadRequest(errorMessage); } function check(genKey, type) { let violation = genKey === type.property; if (!violation) { violation = type.getChildren().some(check.bind(null, genKey)); } return violation; }