@sap/xsodata
Version:
Expose data from a HANA database as OData V2 service with help of .xsodata files.
72 lines (60 loc) • 2.51 kB
JavaScript
;
var sql = require('./sqlStatement');
//Code
exports.rIdToTableName = function (reqId, rId) {
return '#r' + reqId + '_' + rId;
};
exports.rIdToNewTableName = function (name, netId, reqId, rId) {
//return '#NEW_' + name + '_' + reqId + '_' + rId;
return exports.rIdToAlteredTableName('#NEW', name, netId, reqId, rId);
};
exports.rIdToOldTableName = function (name, netId, reqId, rId) {
//return '#OLD_' + name + '_' + reqId + '_' + rId;
return exports.rIdToAlteredTableName('#OLD', name, netId, reqId, rId);
};
/**
* alter a given table name into prefix_name_reqId_rId
* @param {string} prefix - should start with '#' fot temp tables
* @param {string} name - the given table (or alias) name
* @param {int} reqId - request id
* @param {int} rId - counter
* */
exports.rIdToAlteredTableName = function (prefix, name, netId, reqId, rId) {
return prefix + '_' + name + '_' + netId + '_' + reqId + '_' + rId;
};
exports.collectSqls = function (context,sqlContext) {
context.logger.silly('sqlCollector', 'collectSqls');
var containerAll = new sql.GetContainerAll();
addSqlsToContainer(sqlContext.dbSegLast, containerAll);
return containerAll;
/**
* Move the generated SQL statements from the dbSegment into container
* Stored is the SQL statements and the corresponding dbSegment
* @param dbSeg {DbSegment} start point for traversing
* @param container
*/
function addSqlsToContainer(dbSeg, container) {
if (dbSeg.sql.stmContainer.createTmp) {
container.createTmp.push({stm: dbSeg.sql.stmContainer.createTmp, dbSeg: dbSeg});
}
if (dbSeg.sql.stmContainer.insertTmp) {
container.insertTmp.push({stm: dbSeg.sql.stmContainer.insertTmp, dbSeg: dbSeg});
}
if (dbSeg.sql.stmContainer.selectTmp) {
container.selectTmp.push({stm: dbSeg.sql.stmContainer.selectTmp, dbSeg: dbSeg});
}
if (dbSeg.sql.stmContainer.select) {
container.select.push({stm: dbSeg.sql.stmContainer.select, dbSeg: dbSeg});
}
//resource path chain
if (dbSeg.nextDBSegment) {
addSqlsToContainer(dbSeg.nextDBSegment, container);
}
//resource path chain
var i;
for (i = 0; i < dbSeg._ExpandedNavigations.length; i++) {
var name = dbSeg._ExpandedNavigations[i];
addSqlsToContainer(dbSeg.getRelevantNavigationSegments()[name], container);
}
}
};