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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user