aozhiwei 7ea7e6154b 1
2022-02-09 17:16:46 +08:00

76 lines
1.7 KiB
JavaScript

const util = require("util");
const mysql = require("mysql");
const metamgr = require("./metamgr");
const log = require("./log");
let pool = null;
function execQuery(sql, params) {
if (!pool) {
pool = mysql.createPool({
host : metamgr.getMysqlConf()['host'],
user : metamgr.getMysqlConf()['user'],
password : metamgr.getMysqlConf()['passwd'],
database : metamgr.getMysqlConf()['database'],
stringifyObjects : true
});
}
return new Promise((resolve) => {
const ret = {
err: null,
rows: null,
};
pool.getConnection(function(err, conn) {
if (err) {
try {
ret.err = err;
resolve(ret);
log.error(util.format(
'sql:%s err:%s',
sql, err
));
} finally {
conn.release();
}
} else {
conn.query(sql, params, (err, rows) => {
try {
if (err) {
ret.err = err;
resolve(ret);
log.error(util.format(
'sql:%s err:%s',
sql, err
));
} else {
ret.err = err;
ret.rows = rows;
resolve(ret);
}
} finally {
conn.release();
}
});
}
});
});
}
async function execQueryOne(sql, params) {
const {err, rows} = await execQuery(sql, params);
return {
'err': err,
'row': rows.length > 0 ? rows[0] : null
};
}
async function execScript(sql, params) {
const {err, rows} = await execQuery(sql, params);
return err;
}
exports.execQuery = execQuery;
exports.execQueryOne = execQueryOne;
exports.execScript = execScript;