UNPKG

@sap/xsodata

Version:

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

76 lines (67 loc) 2.46 kB
'use strict'; const connect = require('../db/connect'); const statementProcessor = require('./../sql/statementProcessor'); /** * Assert existing temp table statements. If there are still existing temp table * statements we have to clean up the session before we exist. * * @param {Object} context The odata context * @param {Next} next The callback to be called when finish processing */ exports.assertCleanTempTables = function assertCleanTempTables(context, next) { let statements, statementStr; context.logger.info('xsodata', 'assertCleanTempTables'); statements = context.networkContext.cleanSessionTruncateContainer.concat( context.networkContext.cleanSessionDropContainer ); if (statements.length > 0) { statementStr = JSON.stringify(statements, null, 2); context.logger.info( 'xsodata', 'assertCleanTempTables - remaining temp tables found: ' + statementStr ); context.logger.info( 'xsodata', 'assertCleanTempTables - starting clean up remaining temp tables' ); statementProcessor.execTempTableStatements( context, statements, function done(err) { if (err) { context.logger.silly( 'assertCleanTempTables', 'Error during cleanup' ); return connect.dbRollback( context, context.db.client, function (errDB) { return next(errDB, context); } ); } context.logger.info( 'xsodata', 'assertCleanTempTables - do commit' ); return context.db.client.commit(function (errDB) { if (errDB) { context.logger.silly( 'assertCleanTempTables', 'Commit failed' ); } return next(errDB, context); }); } ); } else { next(null, context); } }; exports.emptyLists = (context) => { context.networkContext.cleanSessionTruncateContainer = []; context.networkContext.cleanSessionDropContainer = []; };