mysql_db.js 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. // mysql 学习资料
  2. //https://www.runoob.com/nodejs/nodejs-mysql.html
  3. //https://blog.csdn.net/hbiao68/article/details/89097853
  4. var mysql = require('mysql');
  5. var { db_config } = require('../config/config.js')
  6. const logger = require('./logger')
  7. var port = db_config.mysql.PORT
  8. var host = db_config.mysql.HOST
  9. var username = db_config.mysql.USERNAME
  10. var password = db_config.mysql.PASSWORD
  11. var database = db_config.mysql.DATABASE
  12. var tablename = db_config.mysql.TABLENAME
  13. var opts = {
  14. host: host,
  15. user: username,
  16. password: password,
  17. port: port,
  18. database: database,
  19. }
  20. var MYSQL_INSTANCE = null;
  21. // opts.connectionLimit = 10
  22. // MYSQL_INSTANCE = mysql.createPool(opts);
  23. createDefMysqlConnect();
  24. function createDefMysqlConnect() {
  25. disDefMysqlConnect();
  26. logger.log('createDefMysqlConnect')
  27. MYSQL_INSTANCE = mysql.createConnection(opts);
  28. MYSQL_INSTANCE.connect();
  29. }
  30. function disDefMysqlConnect() {
  31. if (MYSQL_INSTANCE) {
  32. MYSQL_INSTANCE.end();
  33. MYSQL_INSTANCE = null;
  34. logger.debug('dis mysql')
  35. }
  36. }
  37. // logger.log('connected to mysql ps=', db_config.mysql)
  38. MYSQL_INSTANCE.on('connect', () => {
  39. logger.log('connected to mysql')
  40. })
  41. MYSQL_INSTANCE.on('error', function (err) {
  42. logger.error('mysql Error =>', err);
  43. });
  44. MYSQL_INSTANCE.on('restart', function () {
  45. logger.error('mysql restart =>');
  46. });
  47. MYSQL_INSTANCE.on('acquire', function (connection) {
  48. logger.log('Connection %d acquired', connection.threadId);
  49. });
  50. MYSQL_INSTANCE.on('connection', function (connection) {
  51. logger.log('mysql connection', connection);
  52. });
  53. MYSQL_INSTANCE.on('enqueue', function () {
  54. logger.log('Waiting for available connection slot');
  55. });
  56. MYSQL_INSTANCE.on('release', function (connection) {
  57. logger.log('Connection %d released', connection.threadId);
  58. });
  59. // MYSQL_INSTANCE
  60. MYSQL_INSTANCE.on('uncaughtException', function (err) {
  61. logger.error('mysql uncaughtException =>', err);
  62. if (err.code == "PROTOCOL_CONNECTION_LOST") {
  63. // mysql.restart();
  64. }
  65. });
  66. function queryCompanyInfoFromId(id) {
  67. createDefMysqlConnect()
  68. var sql_main = 'select * from '
  69. var sql_table_name = 'company_key_manage'
  70. var sql_where = ' WHERE '
  71. var sql_where_name = ' id= ? '
  72. var sql_where_value = id
  73. var new_sql = sql_main.concat(sql_table_name, sql_where, sql_where_name);
  74. logger.debug('queryCompanyPrivateKeyFromId new_sql=', new_sql);
  75. return new Promise((resolve) => {
  76. // MYSQL_INSTANCE.getConnection(function (err, connection) {
  77. MYSQL_INSTANCE.query(
  78. new_sql, [sql_where_value],
  79. function selectCb(err, results) {
  80. logger.log('queryCompanyPrivateKeyFromId ret=', err, results);
  81. var ret;
  82. if (results && Array.isArray(results) && results.length > 0) {
  83. ret = results[0]
  84. } else {
  85. ret = null
  86. }
  87. // resolve 只能传递一个参数
  88. resolve({
  89. err: err,
  90. results: ret
  91. });
  92. disDefMysqlConnect();
  93. }
  94. );
  95. // })
  96. })
  97. }
  98. /**
  99. * 查询用户私钥
  100. *
  101. * @param {*} user_address
  102. * @returns
  103. */
  104. function queryUserPrivateKeyFromUserAddress(user_address) {
  105. createDefMysqlConnect()
  106. var sql_main = 'select * from '
  107. var sql_table_name = tablename
  108. var sql_where = ' WHERE '
  109. var sql_where_name = ' user_address= ? '
  110. var sql_where_value = user_address
  111. var new_sql = sql_main.concat(sql_table_name, sql_where, sql_where_name);
  112. logger.debug('queryUserPrivateKeyFromUserAddress new_sql=', new_sql);
  113. return new Promise((resolve) => {
  114. // MYSQL_INSTANCE.getConnection(function (err, connection) {
  115. MYSQL_INSTANCE.query(
  116. new_sql, [sql_where_value],
  117. function selectCb(err, results) {
  118. logger.log('queryUserPrivateKeyFromUserAddress ret=', err, results);
  119. var ret;
  120. if (results && Array.isArray(results) && results.length > 0) {
  121. ret = results[0].user_private_key
  122. } else {
  123. ret = null
  124. }
  125. // resolve 只能传递一个参数
  126. resolve({
  127. err: err,
  128. results: ret
  129. });
  130. disDefMysqlConnect();
  131. }
  132. );
  133. // })
  134. })
  135. }
  136. /**
  137. * 查询用户私钥
  138. *
  139. * @param {*} user_address
  140. * @returns
  141. */
  142. function queryAllUserPrivateKeyAndUserAddress() {
  143. var sql_main = 'select * from '
  144. var sql_table_name = db_config.mysql.TABLENAME
  145. var sql_where = ' order by id desc limit 3'
  146. var sql_where_name = ' '
  147. var new_sql = sql_main.concat(sql_table_name, sql_where, sql_where_name);
  148. logger.debug('queryAllUserPrivateKeyAndUserAddress new_sql=', new_sql);
  149. createDefMysqlConnect()
  150. return new Promise((resolve) => {
  151. // MYSQL_INSTANCE.getConnection(function (err, connection) {
  152. MYSQL_INSTANCE.query(
  153. new_sql, [],
  154. function selectCb(err, results) {
  155. if (results && Array.isArray(results) && results.length > 0) {
  156. resolve(results);
  157. } else {
  158. }
  159. }
  160. );
  161. // })
  162. disDefMysqlConnect();
  163. })
  164. }
  165. //查询语句
  166. //SELECT * FROM user_key_manage WHERE user_address='0x049D33EEE7432DB14c50911fAE4a7C38624313aA'
  167. module.exports = {
  168. queryUserPrivateKeyFromUserAddress,
  169. queryAllUserPrivateKeyAndUserAddress,
  170. queryCompanyInfoFromId,
  171. };