/*
 * @Description: 操作mysql相关的工具函数
 * @Autor: kindring
 * @Date: 2021-12-14 15:34:59
 * @LastEditors: kindring
 * @LastEditTime: 2022-01-25 18:29:18
 * @LastDescript: 
 */
const pool = require('./pool');
const log = require('../logger').logger('database')

/**
 * callback方式查询数据库
 * @param {*} sql 
 * @param {*} values 
 * @param {*} cb 
 */
function query(sql, values, cb) {
    pool.getConnection((err, conn) => {
        if (err) { log.error(err.message); return cb(err) }
        log.debug(`querySQL:${sql}  QueryValues:[${values.join(',')}]`)
        conn.query(sql, values, cb);
        conn.release();
    })
} //简写部分代码

/**
 * 以promise方式查询数据库
 * @param {*} sql 
 * @param {*} values 
 * @returns 
 */
function pq(sql, values = []) {
    return new Promise((resolve, reject) => {
        query(sql, values, function(err, result) {
            if (err) {
                // 自动通过日志记录数据库查询错误的部分
                log.info(`sql: ${sql} \nvalues: ${values.join(',')}`)
                log.error(`Error ${err.message}`);
                reject(err);
                return
            }
            resolve(result);
        });
    })
}

module.exports = {
    query,
    pq
}