@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
JavaScript
;
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 = [];
};