UNPKG

x-sql

Version:

A wrapper module of mysql and squel for supporting promise.

62 lines (57 loc) 1.89 kB
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; };