UNPKG

@sap/xsodata

Version:

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

49 lines (40 loc) 2.67 kB
'use strict'; var odataUri = require('./../uri/oDataUriParser'); var serviceProcessor = require('./../serializer/serviceSerializer'); var metadataProcessor = require('./../serializer/metadataSerializer'); var batchProcessor = require('./../processor/batchProcessor'); var resourceProcessor = require('./resourceProcessor'); var batchRunState = require('./../utils/batch/batchConst').runState; var Measurement = require('./../utils/measurement'); exports.processRequest = function (context, asyncDone) { try { context.logger.silly("processor", "processRequest"); var oData = context.oData; if (oData.kind === odataUri.URI_KIND_Service) { Measurement.measureWithCB(serviceProcessor.process, context, asyncDone, 'serviceProcessor.process'); } else if (oData.kind === odataUri.URI_KIND_MetaData) { Measurement.measureWithCB(metadataProcessor.process, context, asyncDone, 'metadataProcessor.process'); } else if (oData.kind === odataUri.URI_KIND_Batch) { Measurement.measureWithCB(batchProcessor.process, context, asyncDone, 'batchProcessor.process'); // $batch-request itself } else if (oData.kind === odataUri.URI_KIND_Resource) { if (!context.batchContext) { // regular request processing Measurement.measureWithCB(resourceProcessor.process, context, asyncDone, 'resourceProcessor.process'); } else { var batchContext = context.batchContext; // $batch-request: operation processing (based on status) if (batchContext.status === batchRunState.createTables) { // on batch changes: all temp. tables of all operations are generated at beginning batch Measurement.measureWithCB(resourceProcessor.processInBatchCreateTables, context, asyncDone, 'processInBatchCreateTables'); }else if (batchContext.status === batchRunState.execution) { Measurement.measureWithCB(resourceProcessor.processInBatch, context, asyncDone, 'processInBatch'); }else if (batchContext.status === batchRunState.preCommitRun) { Measurement.measureWithCB(resourceProcessor.processInBatchPreCommitRun, context, asyncDone, 'processInBatchPreCommitRun'); } else if (batchContext.status === batchRunState.postCommitRun) { Measurement.measureWithCB(resourceProcessor.processInBatchPostCommitRun, context, asyncDone, 'processInBatchPostCommitRun'); } } } } catch (ex) { return asyncDone(ex); } };