x-sql
Version:
A wrapper module of mysql and squel for supporting promise.
62 lines (57 loc) • 1.89 kB
JavaScript
var mysql = require('mysql'),
squel = require('squel'),
Obj = require('x-obj');
module.exports = function(connOptions) {
var x= {}, fn= {};
x.isString = function(str) {
return Obj(str).isString();
};
x.hasToString = function(obj) {
return Obj(obj).has('toString');
};
fn.q = squel;
fn.query = function(sql) {
return new Promise(function(res, rej) {
if(!sql) {
rej({
errno: 'ENOSQL',
errmsg: 'No SQL argument',
errloc: '.query() - x-sql.js'
});
}
else if(!x.isString(sql) && !x.hasToString(sql)) {
rej({
errno: 'ENOTSQL',
errmsg: 'Not SQL argument',
errloc: '.query() - x-sql.js'
});
}
else {
sql = x.isString(sql)? sql: sql.toString();
if(process.env.NODE_ENV === 'development') {
console.log(sql);
}
mysql.createConnection(connOptions).query(sql, function(err, result) {
if(err && err.code === 'ER_PARSE_ERROR') {
rej({
errno: 'ESQL',
errmsg: err.message,
errloc: '.query() - x-sql.js'
});
}
else if(err) {
rej({
errno: 'ENONSQL',
errmsg: err.message,
errloc: '.query() - x-sql.js'
});
}
else {
res(result);
}
});
}
});
};
return fn;
};