UNPKG

@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
'use strict'; 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); } } };