UNPKG

jh-common-dataaccess

Version:
74 lines (72 loc) 1.79 kB
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} `; } };