Advertisement
hanter7779

Untitled

Aug 26th, 2018
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.99 KB | None | 0 0
  1. const mysql = require('mysql2');
  2.  
  3.  
  4. class MysqlGateway {
  5. constructor () {
  6. this.connection = null;
  7. }
  8.  
  9. createConnection (host, database, user, password, options) {
  10. let connectionInfo = {
  11. connectionLimit: options.connectionLimit || 500,
  12. acquireTimeout: options.connectTimeout || 10000,
  13. connectTimeout: options.connectTimeout || 10000,
  14. timeout: options.requestTimeout || 40000,
  15. host: host,
  16. database: database,
  17. user: user,
  18. password: password,
  19. multipleStatements: true,
  20. dateStrings: true
  21. };
  22. console.log('Connection info:' + JSON.stringify(connectionInfo));
  23. return this.connection = mysql.createPool(connectionInfo);
  24. }
  25. executeQuery (query) {
  26. return new Promise((resolve, reject) => {
  27. if (this.connection === null) {
  28. let error = new Error('Connection is null');
  29. error.code = 500;
  30. return reject(error);
  31. }
  32. this.connection.query(query, (err, res) => {
  33. if (err && err.code === 'ER_LOCK_DEADLOCK') {
  34. this.executeQuery(query).then(
  35. (res) => resolve(parseResult(res)),
  36. (error) => reject(error));
  37. } else if (err) {
  38. reject(err);
  39. } else {
  40. resolve(parseResult(res));
  41. }
  42. });
  43. });
  44. }
  45. async transaction (fields) {
  46. return await this.executeQuery('START TRANSACTION;');
  47. }
  48.  
  49. add (table, fields) {
  50. let into = '';
  51. let values = '';
  52. for (let name in fields) {
  53. into += prepareName(name) + ',';
  54. values += prepareValue(fields[name]) + ',';
  55. }
  56. into = into.slice(0, -1);
  57. values = values.slice(0, -1);
  58. const query = `INSERT INTO ${table} (${Name}) VALUES (${Sallary});`;
  59.  
  60. return this.executeQuery(query);
  61. }
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement