jh-common-dataaccess
Version:
common-dataaccess
96 lines (94 loc) • 2.25 kB
JavaScript
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()}`;
}
};