UNPKG

jh-common-dataaccess

Version:
118 lines (116 loc) 2.78 kB
const mysql = require('mysql'); const DatabaseHelper = require('./DatabaseHelper'); module.exports = class MysqlHelper extends DatabaseHelper { constructor() { super(arguments[0]); } connect() { return new Promise((resolve, reject) => { try { const connection = mysql.createConnection(this.config); connection.connect(); connection.config.queryFormat = function(query, values) { if (!values) return query; return query.replace(/\@(\w+)/g, (txt, key) => { if (values.hasOwnProperty(key)) { return this.escape(values[key]); } return txt; }); }; resolve(connection); } catch (err) { this.print(err); reject('mysql connect error'); } }); } query(sqlstr) { return new Promise((resolve, reject) => { this.connect() .then(client => { client.query(sqlstr, (err, result) => { if (err) { reject(err.message); } else { result.forEach(row => { Object.keys(row).forEach(key => { if (row[key] instanceof Date) { row[key] = this.formatDate(row[key]); } }); }); resolve(result); } client.end(); }); }) .catch(err => { reject(err); }); }); } execute(sqlstr) { return new Promise((resolve, reject) => { this.connect() .then(client => { client.query(sqlstr, (err, result) => { if (err) { reject(err.message); } else { let flag = true; if (result instanceof Array) { result.forEach(item => { flag = flag && item.affectedRows > 0; }); } else { flag = result.affectedRows > 0; } resolve(flag); } client.end(); }); }) .catch(err => { reject(err); }); }); } translate(transParams) { return new Promise((resolve, reject) => { this.connect() .then(client => { const queryObj = {}; transParams.l_dp.forEach(dp => { if (dp.paramsvalue instanceof Date) { dp.paramsvalue = this.formatDate(dp.paramsvalue); } queryObj[dp.paramsname] = dp.paramsvalue; }); client.query(transParams.sql, queryObj, (err, result) => { if (err) { reject(err.message); } else { let flag = true; if (result instanceof Array) { result.forEach(item => { flag = flag && item.affectedRows > 0; }); } else { flag = result.affectedRows > 0; } resolve(flag); } client.end(); }); }) .catch(err => { reject(err); }); }); } static datapager(pageno, pagesize, sqlstr, sp) { return ` ${sqlstr} order by ${sp.Field} ${sp.SortDirection || ''} limit ${pagesize * (pageno - 1)}, ${pagesize} `; } };