Node-server for unitstock app
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

177 lines
4.2 KiB

  1. const oracledb = require('oracledb');
  2. var oracleConfig = require('../config/oracle.js').oracleConfig;
  3. oracledb.fetchAsString = [ oracledb.CLOB ];
  4. oracledb.fetchAsBuffer = [ oracledb.BLOB ];
  5. function editError(err){
  6. var newError = err;
  7. var newErrorString = '';
  8. if(newError.indexOf("\n")!=-1){
  9. var indexColon = newError.indexOf(":")+1;
  10. var indexNewLine = newError.indexOf("\n");
  11. var newErrorSubString = newError.substring(0, indexNewLine);
  12. newErrorSubString = newErrorSubString.substring(indexColon, newErrorSubString.length);
  13. newErrorString = newErrorSubString;
  14. }else{
  15. var indexColon = newError.indexOf(":")+1;
  16. newError = newError.substring(indexColon, newError.length);
  17. newErrorString = newError;
  18. }
  19. return newErrorString.substring(newErrorString.indexOf('.','start')+1);
  20. }
  21. async function getData(query,params = {},options = {}){
  22. let conn;
  23. let error = [];
  24. var result;
  25. var queryOptions = {
  26. outFormat:oracledb.OBJECT
  27. }
  28. for(key in options){
  29. queryOptions[key] = options[key];
  30. }
  31. try{
  32. conn = await oracledb.getConnection(oracleConfig);
  33. var data = await conn.execute(query,params,queryOptions);
  34. result = {"STATUS" : 1 , "DATA" : data.rows};
  35. return result;
  36. }
  37. catch(e){
  38. result = {"STATUS" : 0 , "DATA" : e.message};
  39. return result;
  40. }
  41. finally{
  42. if(conn){
  43. try{
  44. await conn.close();
  45. }
  46. catch(e){
  47. result = {"STATUS" : 0 , "DATA" : e.message};
  48. return result;
  49. }
  50. }
  51. }
  52. }
  53. async function runQuery(query, params,user_id = null,owner = null) {
  54. let conn;
  55. var result;
  56. try{
  57. conn = await oracledb.getConnection(oracleConfig);
  58. // var query = `BEGIN ${owner}.General_SYS.Init_Fnd_Session__(UPPER(:user_login)); END;`;
  59. // var par = {user_login:user_id};
  60. // console.log('Inserted');
  61. // await conn.execute(query,par);
  62. data = await conn.execute(query,params,{ outFormat: oracledb.OBJECT });
  63. await conn.commit();
  64. result = {"STATUS":1,"DATA":data};
  65. }
  66. catch(e){
  67. await conn.rollback();
  68. result = {"STATUS":0,"DATA":e.message};
  69. }
  70. finally{
  71. if(conn){await conn.close()};
  72. return result;
  73. }
  74. };
  75. async function getConnection(){
  76. try{
  77. let conn;
  78. conn = await oracledb.getConnection(oracleConfig);
  79. return conn;
  80. }
  81. catch(e){
  82. console.log(e.message);
  83. throw editError(e.message);
  84. }
  85. }
  86. async function getQueryData(conn,query, params,user_id = null,owner = null){
  87. try{
  88. var data = await conn.execute(query,params,{ outFormat: oracledb.OBJECT });
  89. return data.rows;
  90. }
  91. catch(e){
  92. throw editError(e.message);
  93. }
  94. }
  95. async function runQueryData(conn,query, params,user_id = null,owner = null){
  96. try{
  97. var data = await conn.execute(query,params,{ outFormat: oracledb.OBJECT });
  98. return data;
  99. }
  100. catch(e){
  101. throw editError(e.message);
  102. }
  103. }
  104. async function runQueryMany(conn,query, params,user_id = null,owner = null){
  105. try{
  106. var data = await conn.executeMany(query,params,{ outFormat: oracledb.OBJECT });
  107. return data;
  108. }
  109. catch(e){
  110. throw editError(e.message);
  111. }
  112. }
  113. async function doCommit(conn){
  114. try{
  115. var connection = conn;
  116. await connection.commit();
  117. }
  118. catch(e){
  119. throw editError(e.message);
  120. }
  121. };
  122. async function doRelease(conn){
  123. try{
  124. var connection = conn;
  125. await connection.close();
  126. }
  127. catch(e){
  128. throw editError(e.message);
  129. }
  130. }
  131. async function doRollBack(conn){
  132. try{
  133. var connection = conn;
  134. await connection.rollback();
  135. await conn.close();
  136. }
  137. catch(e){
  138. throw e;
  139. }
  140. }
  141. module.exports = {
  142. getData : getData,
  143. runQuery : runQuery,
  144. getConnection : getConnection,
  145. getQueryData : getQueryData,
  146. runQueryData : runQueryData,
  147. runQueryMany : runQueryMany,
  148. doCommit : doCommit,
  149. doRelease : doRelease,
  150. doRollBack : doRollBack
  151. }