Merge branch 'master' of github.com:coolaj86/node-masterquest-sqlite3

This commit is contained in:
AJ ONeal 2016-03-26 17:03:26 -04:00
commit edb2588095
1 changed files with 20 additions and 2 deletions

View File

@ -13,7 +13,12 @@ function wrap(db, dir, dbsMap) {
} }
db.escape = function (str) { db.escape = function (str) {
return (str||'').toString().replace(/'/g, "''"); // TODO? literals for true,false,null
// error on undefined?
if (undefined === str) {
str = '';
}
return String(str).replace(/'/g, "''");
}; };
function lowerFirst(str) { function lowerFirst(str) {
@ -229,9 +234,21 @@ function wrap(db, dir, dbsMap) {
}; };
DB.find = function (obj, params) { DB.find = function (obj, params) {
var err;
var sql = 'SELECT * FROM \'' + tablename + '\' '; var sql = 'SELECT * FROM \'' + tablename + '\' ';
var keys = obj && Object.keys(obj); var keys = obj && Object.keys(obj);
if (obj) {
Object.keys(obj).forEach(function (key) {
if (undefined === obj[key]) {
err = new Error("'" + key + "' was `undefined'. For security purposes you must explicitly set the value to null or ''");
}
});
}
if (err) {
return PromiseA.reject(err);
}
if (obj && keys.length) { if (obj && keys.length) {
sql += 'WHERE '; sql += 'WHERE ';
@ -240,9 +257,10 @@ function wrap(db, dir, dbsMap) {
sql += 'AND '; sql += 'AND ';
} }
if (null === obj[key]) { if (null === obj[key]) {
sql += db.escape(snakeCase(key)) + " IS '" + db.escape(obj[key]) + "'"; sql += db.escape(snakeCase(key)) + " IS null";
} }
else { else {
// TODO check that key is some type? ignore undefined?
sql += db.escape(snakeCase(key)) + " = '" + db.escape(obj[key]) + "'"; sql += db.escape(snakeCase(key)) + " = '" + db.escape(obj[key]) + "'";
} }
}); });