UNPKG

@sap/xsodata

Version:

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

89 lines (82 loc) 3.5 kB
'use strict'; const odataUri = require('./../uri/oDataUriParser'); const serviceProcessor = require('./../serializer/serviceSerializer'); const metadataProcessor = require('./../serializer/metadataSerializer'); const batchProcessor = require('./../processor/batchProcessor'); const resourceProcessor = require('./resourceProcessor'); const batchRunState = require('./../utils/batch/batchConst').runState; const Measurement = require('./../utils/measurement'); exports.processRequest = function (context, asyncDone) { try { context.logger.silly('processor', 'processRequest'); const 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 { const 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); } };