Guest User

Untitled

a guest
Feb 20th, 2019
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.58 KB | None | 0 0
  1. var Connection = require("tedious").Connection;
  2. var Request = require("tedious").Request;
  3. var ConnectionPool = require("tedious-connection-pool");
  4.  
  5. // Avoiding concurrent SQL SERVER calls
  6. var poolConfig = {
  7. min: 1,
  8. max: 1,
  9. log: true
  10. };
  11.  
  12. // Edit this config
  13. var connectionConfig = {
  14. userName: "username",
  15. password: "password",
  16. server: "ipaddress",
  17. options: {
  18. rowCollectionOnDone: true, // Only get row set instead of row by row
  19. useColumnNames: true // For easier JSON formatting
  20. }
  21. };
  22.  
  23. var _rows = [];
  24.  
  25. var pool = new ConnectionPool(poolConfig, connectionConfig);
  26.  
  27. pool.on("error", function(err) {
  28. console.error(err);
  29. });
  30.  
  31. var _rows = [];
  32.  
  33. const query = (params, sql, callback) => {
  34. pool.acquire((err, connection) => {
  35. request = new Request(sql, (err, rowCount) => {
  36. if (err) {
  37. console.log(err);
  38. return;
  39. }
  40. connection.release();
  41. });
  42.  
  43. if (params.length > 0) {
  44. params.forEach(param => {
  45. request.addParameter(param.name, param.type, param.value);
  46. });
  47. }
  48.  
  49. _rows = [];
  50.  
  51. request.on("row", columns => {
  52. var _item = {};
  53. // Converting the response row to a JSON formatted object: [property]: value
  54. for (var name in columns) {
  55. _item[name] = columns[name].value;
  56. }
  57. _rows.push(_item);
  58. });
  59.  
  60. // We return the set of rows after the query is complete, instead of returing row by row
  61. request.on("doneInProc", (rowCount, more, rows) => {
  62. callback(_rows);
  63. });
  64.  
  65. connection.execSql(request);
  66. });
  67. };
  68.  
  69. const proc = (params, sql, callback) => {
  70. pool.acquire((err, connection) => {
  71. request = new Request(sql, (err, rowCount) => {
  72. if (err) {
  73. console.log(err);
  74. return;
  75. }
  76. connection.release();
  77. });
  78.  
  79. if (params.length > 0) {
  80. params.forEach(param => {
  81. request.addParameter(param.name, param.type, param.value);
  82. });
  83. }
  84.  
  85. _rows = [];
  86.  
  87. request.on("row", columns => {
  88. var _item = {};
  89. // Converting the response row to a JSON formatted object: [property]: value
  90. for (var name in columns) {
  91. _item[name] = columns[name].value;
  92. }
  93. _rows.push(_item);
  94. });
  95.  
  96. // We return the set of rows after the procedure is complete, instead of returing row by row
  97. request.on("doneProc", (rowCount, more, rows) => {
  98. callback(_rows);
  99. });
  100.  
  101. connection.callProcedure(request);
  102. });
  103. };
  104.  
  105. const buildParams = (params, name, type, value) => {
  106. params.push({
  107. name: name,
  108. type: type,
  109. value: value
  110. });
  111. };
  112.  
  113. module.exports = {
  114. buildParams: buildParams,
  115. query: query,
  116. proc: proc
  117. };
Add Comment
Please, Sign In to add comment