const oracledb = require('oracledb'); var oracleConfig = require('../config/oracle.js').oracleConfig; oracledb.fetchAsString = [ oracledb.CLOB ]; oracledb.fetchAsBuffer = [ oracledb.BLOB ]; function editError(err){ var newError = err; var newErrorString = ''; if(newError.indexOf("\n")!=-1){ var indexColon = newError.indexOf(":")+1; var indexNewLine = newError.indexOf("\n"); var newErrorSubString = newError.substring(0, indexNewLine); newErrorSubString = newErrorSubString.substring(indexColon, newErrorSubString.length); newErrorString = newErrorSubString; }else{ var indexColon = newError.indexOf(":")+1; newError = newError.substring(indexColon, newError.length); newErrorString = newError; } return newErrorString.substring(newErrorString.indexOf('.','start')+1); } async function getData(query,params = {},options = {}){ let conn; let error = []; var result; var queryOptions = { outFormat:oracledb.OBJECT } for(key in options){ queryOptions[key] = options[key]; } try{ conn = await oracledb.getConnection(oracleConfig); var data = await conn.execute(query,params,queryOptions); result = {"STATUS" : 1 , "DATA" : data.rows}; return result; } catch(e){ result = {"STATUS" : 0 , "DATA" : e.message}; return result; } finally{ if(conn){ try{ await conn.close(); } catch(e){ result = {"STATUS" : 0 , "DATA" : e.message}; return result; } } } } async function runQuery(query, params,user_id = null,owner = null) { let conn; var result; try{ conn = await oracledb.getConnection(oracleConfig); // var query = `BEGIN ${owner}.General_SYS.Init_Fnd_Session__(UPPER(:user_login)); END;`; // var par = {user_login:user_id}; // console.log('Inserted'); // await conn.execute(query,par); data = await conn.execute(query,params,{ outFormat: oracledb.OBJECT }); await conn.commit(); result = {"STATUS":1,"DATA":data}; } catch(e){ await conn.rollback(); result = {"STATUS":0,"DATA":e.message}; } finally{ if(conn){await conn.close()}; return result; } }; async function getConnection(){ try{ let conn; conn = await oracledb.getConnection(oracleConfig); return conn; } catch(e){ console.log(e.message); throw editError(e.message); } } async function getQueryData(conn,query, params,user_id = null,owner = null){ try{ var data = await conn.execute(query,params,{ outFormat: oracledb.OBJECT }); return data.rows; } catch(e){ throw editError(e.message); } } async function runQueryData(conn,query, params,user_id = null,owner = null){ try{ var data = await conn.execute(query,params,{ outFormat: oracledb.OBJECT }); return data; } catch(e){ throw editError(e.message); } } async function runQueryMany(conn,query, params,user_id = null,owner = null){ try{ var data = await conn.executeMany(query,params,{ outFormat: oracledb.OBJECT }); return data; } catch(e){ throw editError(e.message); } } async function doCommit(conn){ try{ var connection = conn; await connection.commit(); } catch(e){ throw editError(e.message); } }; async function doRelease(conn){ try{ var connection = conn; await connection.close(); } catch(e){ throw editError(e.message); } } async function doRollBack(conn){ try{ var connection = conn; await connection.rollback(); await conn.close(); } catch(e){ throw e; } } module.exports = { getData : getData, runQuery : runQuery, getConnection : getConnection, getQueryData : getQueryData, runQueryData : runQueryData, runQueryMany : runQueryMany, doCommit : doCommit, doRelease : doRelease, doRollBack : doRollBack }