jh-common-dataaccess
Version:
common-dataaccess
74 lines (72 loc) • 1.79 kB
JavaScript
const sqlite3 = require('sqlite3');
const DatabaseHelper = require('./DatabaseHelper');
module.exports = class SqliteHelper extends DatabaseHelper {
constructor() {
super(arguments[0]);
if (!('database' in this.config)) throw new Error(`params should include 'database'`);
}
connect() {
return new Promise((resolve, reject) => {
const db = new sqlite3.Database(this.config.database, function() {
resolve(db);
});
});
}
query(sqlstr) {
return new Promise((resolve, reject) => {
this.connect().then(client => {
client.all(sqlstr, (err, result) => {
if (err) {
reject(err);
} else {
result.forEach(row => {
Object.keys(row).forEach(key => {
if (row[key] instanceof Date) {
row[key] = this.formatDate(row[key]);
}
});
});
resolve(result);
}
});
});
});
}
execute(sqlstr) {
return new Promise((resolve, reject) => {
this.connect().then(client => {
client.run(sqlstr, (err, result) => {
if (err) {
reject(err);
} else {
resolve(true);
}
});
});
});
}
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.run(transParams.sql, queryObj, (err, result) => {
if (err) {
reject(err);
} else {
resolve(true);
}
});
});
});
}
static datapager(pageno, pagesize, sqlstr, sp) {
return ` ${sqlstr} order by ${sp.Field} ${sp.SortDirection || ''} limit ${pagesize} offset ${(pageno - 1) *
pagesize} `;
}
};