node-querybuilder
Version:
Modeled after Codeigniter's QueryBuilder. Build and execute queries in a safe and database-agnostic way.
52 lines (46 loc) • 1.19 kB
JavaScript
class WrapperPromise {
/**
*
* @param {String} sql - A sql command
* @param {function} exec - A sql execution function
* @param {function} cb - A callback function
*
* @description
* Wraps the execute command in promise
*/
constructor(sql, exec, cb) {
this.sql = sql;
this.exec = exec;
if (typeof cb === "function") this.cb = cb.bind(this);
}
/**
* Promisify
*/
promisify() {
return new Promise((resolve, reject) => {
this.resolve = resolve;
this.reject = reject;
this.invoke();
});
}
/**
* Executet the query and resolve as the result
*/
invoke() {
this.exec(this.sql, (err, res) => {
if (err) {
this.reject(err);
return;
}
/**
* If theres is a cb function, let the cb function resolve and reject the promise
*/
if (typeof this.cb === "function") {
this.cb(err, res);
return;
}
this.resolve(res);
});
}
}
module.exports = WrapperPromise;