UNPKG

@sap/xsodata

Version:

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

52 lines (42 loc) 1.96 kB
'use strict'; var connect = require('../db/connect'); var 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) { var 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 = []; };