123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311 |
- // mysql 学习资料
- //https://www.runoob.com/nodejs/nodejs-mysql.html
- //https://blog.csdn.net/hbiao68/article/details/89097853
- //https://github.com/mysqljs/mysql
- var mysql = require('mysql');
- var { db_config } = require('../../config/config.js')
- const logger = require('../logger')
- const utils = require('../utils.js')
- var port = db_config.mysql.PORT
- var host = db_config.mysql.HOST
- var username = db_config.mysql.USERNAME
- var password = db_config.mysql.PASSWORD
- var database = db_config.mysql.DATABASE
- var tablename = db_config.mysql.TABLENAME
- var open_pool = db_config.mysql.OPEN_POOL
- var pool_size = db_config.mysql.POOL_SIZE
- var opts = {
- host: host,
- user: username,
- password: password,
- port: port,
- database: database,
- }
- var MYSQL_INSTANCE = null;
- //程序启动默认创建一个 mysql 连接
- createDefMysqlConnect();
- // 开始创建
- function createDefMysqlConnect() {
- disDefMysqlConnect();
- logger.log('createDefMysqlConnect',database)
- if (open_pool) {//创建连接池
- opts.connectionLimit = pool_size
- MYSQL_INSTANCE = mysql.createPool(opts);
- addConnEvent()
- } else {//创建单连接
- MYSQL_INSTANCE = mysql.createConnection(opts);
- addConnEvent()
- MYSQL_INSTANCE.connect();
- }
- return MYSQL_INSTANCE;
- }
- //关闭 mysql
- function disDefMysqlConnect() {
- if (MYSQL_INSTANCE) {
- if (open_pool) {
- MYSQL_INSTANCE.end();
- } else {
- MYSQL_INSTANCE.end();
- }
- MYSQL_INSTANCE = null;
- logger.debug('disDefMysqlConnect')
- }
- }
- function getMySqlInstance() {
- if (MYSQL_INSTANCE) return MYSQL_INSTANCE
- return createDefMysqlConnect();
- }
- function addConnEvent() {
- if (!MYSQL_INSTANCE) return
- if (open_pool) {
- MYSQL_INSTANCE.on('acquire', function (connection) {
- logger.log('Connection %d acquired', connection.threadId);
- });
- MYSQL_INSTANCE.on('connection', function (connection) {
- logger.log('mysql connection', connection.threadId);
- });
- MYSQL_INSTANCE.on('enqueue', function () {
- logger.log('Waiting for available connection slot');
- });
- MYSQL_INSTANCE.on('release', function (connection) {
- logger.log('Connection %d released', connection.threadId);
- });
- } else {
- // logger.log('connected to mysql ps=', db_config.mysql)
- MYSQL_INSTANCE.on('connect', () => {
- logger.log('connected to mysql')
- })
- MYSQL_INSTANCE.on('error', function (err) {
- logger.error('mysql Error =>', err);
- });
- MYSQL_INSTANCE.on('restart', function () {
- logger.error('mysql restart =>');
- });
- }
- }
- function queryCompanyInfoFromId(id) {
- var sql_main = 'select * from '
- var sql_table_name = 'company_key_manage'
- var sql_where = ' WHERE '
- var sql_where_name = ' id= ? '
- var sql_where_value = id
- var new_sql = sql_main.concat(sql_table_name, sql_where, sql_where_name);
- logger.debug('queryCompanyPrivateKeyFromId new_sql=', new_sql);
- return new Promise((resolve) => {
- if (open_pool) {
- getMySqlInstance().getConnection(function (err, connection) {
- if (err) {
- logger.error('queryCompanyInfoFromId', err)
- logger.error('new_sql', new_sql, id)
- resolve(null);
- return;
- }
- connection.query(
- new_sql, [sql_where_value],
- function selectCb(error, results) {
- if (error) {
- logger.error('queryCompanyInfoFromId', error)
- logger.error('new_sql', new_sql, id)
- resolve(null);
- return;
- }
- logger.log('queryCompanyPrivateKeyFromId ret=', error, results);
- //用完当前连接需要释放,归还给连接池
- connection.release();
- var ret;
- if (results && Array.isArray(results) && results.length > 0) {
- ret = results[0]
- } else {
- ret = null
- }
- // resolve 只能传递一个参数
- resolve({
- err: error,
- results: ret
- });
- }
- );
- })
- } else {
- createDefMysqlConnect()
- MYSQL_INSTANCE.query(
- new_sql, [sql_where_value],
- function selectCb(err, results) {
- logger.log('queryCompanyPrivateKeyFromId ret=', err, results);
- var ret;
- if (results && Array.isArray(results) && results.length > 0) {
- ret = results[0]
- } else {
- ret = null
- }
- // resolve 只能传递一个参数
- resolve({
- err: err,
- results: ret
- });
- disDefMysqlConnect();
- }
- );
- }
- })
- }
- /**
- * 查询用户私钥
- *
- * @param {*} user_address
- * @returns
- */
- function queryUserPrivateKeyFromUserAddress(user_address) {
- var sql_main = 'select * from '
- var sql_table_name = tablename
- var sql_where = ' WHERE '
- var sql_where_name = ' user_address= ? '
- var sql_where_value = user_address
- var new_sql = sql_main.concat(sql_table_name, sql_where, sql_where_name);
- logger.debug('queryUserPrivateKeyFromUserAddress new_sql=', new_sql);
- return new Promise((resolve) => {
- if (open_pool) {
- getMySqlInstance().getConnection(function (err, connection) {
- if (err) {
- logger.error('queryUserPrivateKeyFromUserAddress', err)
- logger.error('new_sql', new_sql, id)
- resolve(null);
- return;
- }
- connection.query(
- new_sql, [sql_where_value],
- function selectCb(error, results) {
- if (error) {
- logger.error('queryUserPrivateKeyFromUserAddress', error)
- logger.error('new_sql', new_sql, id)
- resolve(null);
- return;
- }
- logger.log('queryUserPrivateKeyFromUserAddress ret=', error, results);
- //用完当前连接需要释放,归还给连接池
- connection.release();
- var ret;
- if (results && Array.isArray(results) && results.length > 0) {
- ret = results[0].user_private_key
- } else {
- ret = null
- }
- // resolve 只能传递一个参数
- resolve({
- err: err,
- results: ret
- });
- }
- );
- })
- } else {
- createDefMysqlConnect()
- MYSQL_INSTANCE.query(
- new_sql, [sql_where_value],
- function selectCb(err, results) {
- logger.log('queryUserPrivateKeyFromUserAddress ret=', err, results);
- var ret;
- if (results && Array.isArray(results) && results.length > 0) {
- ret = results[0].user_private_key
- } else {
- ret = null
- }
- // resolve 只能传递一个参数
- resolve({
- err: err,
- results: ret
- });
- disDefMysqlConnect();
- }
- );
- }
- })
- }
- /**
- * 查询用户私钥
- *
- * @param {*} user_address
- * @returns
- */
- function queryAllUserPrivateKeyAndUserAddress() {
- var sql_main = 'select * from '
- var sql_table_name = db_config.mysql.TABLENAME
- var sql_where = ' order by id desc limit 3'
- var sql_where_name = ' '
- var new_sql = sql_main.concat(sql_table_name, sql_where, sql_where_name);
- logger.debug('queryAllUserPrivateKeyAndUserAddress new_sql=', new_sql);
- return new Promise((resolve) => {
- if (open_pool) {
- getMySqlInstance().getConnection(function (err, connection) {
- if (err) {
- logger.error('queryAllUserPrivateKeyAndUserAddress', err)
- logger.error('new_sql', new_sql, id)
- resolve(null);
- return;
- }
- connection.query(
- new_sql, [],
- function selectCb(error, results) {
- if (error) {
- logger.error('queryAllUserPrivateKeyAndUserAddress', error)
- logger.error('new_sql', new_sql, id)
- resolve(null);
- return;
- }
- //用完当前连接需要释放,归还给连接池
- connection.release();
- if (results && Array.isArray(results) && results.length > 0) {
- resolve(results);
- } else {
- }
- }
- );
- })
- } else {
- createDefMysqlConnect()
- MYSQL_INSTANCE.query(
- new_sql, [],
- function selectCb(err, results) {
- if (results && Array.isArray(results) && results.length > 0) {
- resolve(results);
- } else {
- }
- }
- );
- disDefMysqlConnect();
- }
- })
- }
- //查询语句
- //SELECT * FROM user_key_manage WHERE user_address='0x049D33EEE7432DB14c50911fAE4a7C38624313aA'
- module.exports = {
- queryUserPrivateKeyFromUserAddress,
- queryAllUserPrivateKeyAndUserAddress,
- queryCompanyInfoFromId,
- getMySqlInstance,
- };
|