76 lines
1.7 KiB
JavaScript
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;
|