fix snakecasing, add order by
This commit is contained in:
parent
9a25ad99a1
commit
75089a9f54
|
@ -38,6 +38,7 @@ function wrap(db, dir) {
|
||||||
var DB = {};
|
var DB = {};
|
||||||
var tablename = db.escape(snakeCase(opts.tablename) || 'data');
|
var tablename = db.escape(snakeCase(opts.tablename) || 'data');
|
||||||
var idname = db.escape(snakeCase(opts.idname) || 'id');
|
var idname = db.escape(snakeCase(opts.idname) || 'id');
|
||||||
|
var idnameCased = (camelCase(opts.idname) || 'id');
|
||||||
|
|
||||||
db = PromiseA.promisifyAll(db);
|
db = PromiseA.promisifyAll(db);
|
||||||
|
|
||||||
|
@ -65,7 +66,7 @@ function wrap(db, dir) {
|
||||||
obj = {};
|
obj = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
obj[idname] = row[idname];
|
obj[idnameCased] = row[idname];
|
||||||
|
|
||||||
return obj;
|
return obj;
|
||||||
}
|
}
|
||||||
|
@ -87,7 +88,7 @@ function wrap(db, dir) {
|
||||||
obj = {};
|
obj = {};
|
||||||
}
|
}
|
||||||
|
|
||||||
obj[idname] = row[idname];
|
obj[idnameCased] = row[idname];
|
||||||
});
|
});
|
||||||
// set up for garbage collection
|
// set up for garbage collection
|
||||||
rows.length = 0;
|
rows.length = 0;
|
||||||
|
@ -96,7 +97,7 @@ function wrap(db, dir) {
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
DB.find = function (opts) {
|
DB.find = function (opts, params) {
|
||||||
var sql = 'SELECT * FROM ' + tablename + ' WHERE ';
|
var sql = 'SELECT * FROM ' + tablename + ' WHERE ';
|
||||||
|
|
||||||
Object.keys(opts).forEach(function (key, i) {
|
Object.keys(opts).forEach(function (key, i) {
|
||||||
|
@ -106,6 +107,15 @@ function wrap(db, dir) {
|
||||||
sql += db.escape(snakeCase(key)) + ' ' + db.escape(opts[key]);
|
sql += db.escape(snakeCase(key)) + ' ' + db.escape(opts[key]);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
if (params) {
|
||||||
|
if (params.orderBy) {
|
||||||
|
sql += ' ORDER BY ' + db.escape(snakeCase(params.orderBy));
|
||||||
|
if (params.orderByDesc) {
|
||||||
|
sql += ' DESC';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return db.allAsync("SELECT * FROM " + tablename + " " + sql, []).then(simpleMap);
|
return db.allAsync("SELECT * FROM " + tablename + " " + sql, []).then(simpleMap);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -139,29 +149,46 @@ function wrap(db, dir) {
|
||||||
};
|
};
|
||||||
|
|
||||||
DB.save = function (data) {
|
DB.save = function (data) {
|
||||||
if (!data[idname]) {
|
if (!data[idnameCased]) {
|
||||||
// NOTE saving the id both in the object and the id for now
|
// NOTE saving the id both in the object and the id for now
|
||||||
var UUID = require('node-uuid');
|
var UUID = require('node-uuid');
|
||||||
data[idname] = UUID.v4();
|
data[idnameCased] = UUID.v4();
|
||||||
return DB.create(data[idname], data).then(function (/*stats*/) {
|
return DB.create(data[idnameCased], data).then(function (/*stats*/) {
|
||||||
//data._rowid = stats.id;
|
//data._rowid = stats.id;
|
||||||
return data;
|
return data;
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
return DB.set(data[idname], data).then(function (result) {
|
return DB.set(data[idnameCased], data).then(function (result) {
|
||||||
var success = result.changes >= 1;
|
var success = result.changes >= 1;
|
||||||
|
|
||||||
if (success) {
|
if (success) {
|
||||||
return result;
|
return result;
|
||||||
|
} else {
|
||||||
|
console.log('[debug result of set]', result.sql);
|
||||||
|
delete result.sql;
|
||||||
|
console.log(result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
DB.create = function (id, data) {
|
DB.create = function (id, obj) {
|
||||||
var json = JSON.stringify(data);
|
if (!obj) {
|
||||||
|
obj = id;
|
||||||
|
id = obj[idnameCased];
|
||||||
|
}
|
||||||
|
if (!id) {
|
||||||
|
return PromiseA.reject(new Error("no id supplied"));
|
||||||
|
}
|
||||||
|
|
||||||
return new PromiseA(function (resolve, reject) {
|
return new PromiseA(function (resolve, reject) {
|
||||||
|
var json = JSON.stringify(obj);
|
||||||
|
var data = JSON.parse(json);
|
||||||
|
delete data[idnameCased];
|
||||||
|
json = JSON.stringify(data);
|
||||||
|
|
||||||
var sql = "INSERT INTO " + tablename + " (" + idname + ", json) VALUES (?, ?)";
|
var sql = "INSERT INTO " + tablename + " (" + idname + ", json) VALUES (?, ?)";
|
||||||
var values = [id, json];
|
var values = [id, json];
|
||||||
|
|
||||||
|
@ -221,6 +248,7 @@ function wrap(db, dir) {
|
||||||
|
|
||||||
delete data[col.name];
|
delete data[col.name];
|
||||||
});
|
});
|
||||||
|
delete data[idnameCased];
|
||||||
|
|
||||||
json = JSON.stringify(data);
|
json = JSON.stringify(data);
|
||||||
fieldable.push("json = ?");
|
fieldable.push("json = ?");
|
||||||
|
@ -258,7 +286,7 @@ function wrap(db, dir) {
|
||||||
|
|
||||||
DB.destroy = function (id) {
|
DB.destroy = function (id) {
|
||||||
if ('object' === typeof id) {
|
if ('object' === typeof id) {
|
||||||
id = id[idname];
|
id = id[idnameCased];
|
||||||
}
|
}
|
||||||
|
|
||||||
return new PromiseA(function (resolve, reject) {
|
return new PromiseA(function (resolve, reject) {
|
||||||
|
|
Loading…
Reference in New Issue