UNPKG

jh-common-dataaccess

Version:
96 lines (94 loc) 2.25 kB
const mssql = require('mssql'); const DatabaseHelper = require('./DatabaseHelper'); module.exports = class MssqlHelper extends DatabaseHelper { constructor() { super(arguments[0]); } connect() { return new Promise((resovle, reject) => { try { mssql.close(); const connection = mssql.connect(this.config); resovle(connection); } catch (err) { this.print(err); reject(err); } }); } query(sqlstr) { return new Promise((resolve, reject) => { this.connect().then(client => { client .query(sqlstr) .then(result => { result.recordset.forEach(row => { Object.keys(row).forEach(key => { if (row[key] instanceof Date) { row[key] = this.formatDate(row[key]); } }); }); resolve(result.recordset); client.close(); }) .catch(err => { reject(err); client.close(); }); }); }); } execute(sqlstr) { return new Promise((resolve, reject) => { this.connect().then(client => { client .query(sqlstr) .then(result => { resolve(result.rowsAffected[0] > 0); client.close(); }) .catch(err => { reject(err); client.close(); }); }); }); } translate(transParams) { return new Promise((resolve, reject) => { this.connect() .then(client => { let request = client.request(); transParams.l_dp.forEach(dp => { if (dp.paramsvalue instanceof Date) { dp.paramsvalue = this.formatDate(dp.paramsvalue); } request = request.input(dp.paramsname, dp.paramsvalue); }); request .query(transParams.sql) .then(result => { resolve(result.rowsAffected[0] > 0); client.close(); }) .catch(err => { reject(err); client.close(); }); }) .catch(err => { reject(err); }); }); } static datapager(pageno, pagesize, sqlstr, sp) { return ` select TMPTABLE2.* from (select TMPTABLE1.*,ROW_NUMBER() OVER(ORDER BY TMPTABLE1.${ sp.Field } ${sp.SortDirection || ''} ) ROWNUM_tmp from (${sqlstr}) TMPTABLE1) TMPTABLE2 where TMPTABLE2.ROWNUM_tmp between ${( (pageno - 1) * pagesize + 1 ).toString()} and ${(pageno * pagesize).toString()}`; } };