allow changing id
This commit is contained in:
		
							parent
							
								
									4a2dde22c8
								
							
						
					
					
						commit
						c825e7af06
					
				@ -81,10 +81,10 @@ API
 | 
			
		||||
 | 
			
		||||
It's kinda CRUDdy... but don't let that scare you.
 | 
			
		||||
 | 
			
		||||
* `upsert(id, data)` - creates or updates based on existence in DB (use this)
 | 
			
		||||
* `upsert(id, data[, oldId])` - creates or updates based on existence in DB (use this)
 | 
			
		||||
  * modifies `createdAt` and or `updatedAt`
 | 
			
		||||
* `create(id, obj)` - same as above, but fails if the object exists
 | 
			
		||||
* `save(data)` - (just don't use this, please) creates or updates based on presence of ID
 | 
			
		||||
* `save(data[, oldId])` - (just don't use this, please) creates or updates based on presence of ID
 | 
			
		||||
* `destroy(id)` - mark a record as `deletedAt` from DB
 | 
			
		||||
* `get(id)` - grab one by id
 | 
			
		||||
* `find(attrs, opts)` - grab many by indexable attributes
 | 
			
		||||
 | 
			
		||||
@ -303,13 +303,13 @@ function wrap(db, dir, dbsMap) {
 | 
			
		||||
      }).then(simpleParse);
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    DB.upsert = function (id, data) {
 | 
			
		||||
    DB.upsert = function (id, data, oldId) {
 | 
			
		||||
      if (!data) {
 | 
			
		||||
        data = id;
 | 
			
		||||
        id = data[idnameCased];
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      return DB.set(id, data).then(function (result) {
 | 
			
		||||
      return DB.set(oldId || id, data, oldId).then(function (result) {
 | 
			
		||||
        var success = result.changes >= 1;
 | 
			
		||||
 | 
			
		||||
        if (success) {
 | 
			
		||||
@ -320,8 +320,8 @@ function wrap(db, dir, dbsMap) {
 | 
			
		||||
      });
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    DB.save = function (data) {
 | 
			
		||||
      if (!data[idnameCased]) {
 | 
			
		||||
    DB.save = function (data, oldId) {
 | 
			
		||||
      if (!data[idnameCased] && !oldId) {
 | 
			
		||||
        // NOTE saving the id both in the object and the id for now
 | 
			
		||||
        var UUID = require('node-uuid');
 | 
			
		||||
        data[idnameCased] = UUID.v4();
 | 
			
		||||
@ -331,7 +331,7 @@ function wrap(db, dir, dbsMap) {
 | 
			
		||||
        });
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      return DB.set(data[idnameCased], data).then(function (result) {
 | 
			
		||||
      return DB.set(oldId || data[idnameCased], data, oldId).then(function (result) {
 | 
			
		||||
        var success = result.changes >= 1;
 | 
			
		||||
 | 
			
		||||
        if (success) {
 | 
			
		||||
@ -396,7 +396,7 @@ function wrap(db, dir, dbsMap) {
 | 
			
		||||
    };
 | 
			
		||||
 | 
			
		||||
    // pull indices from object
 | 
			
		||||
    function strainUpdate(id, data/*, vals*/, cb) {
 | 
			
		||||
    function strainUpdate(id, data/*, vals*/, cb, oldId) {
 | 
			
		||||
      var fieldable = [];
 | 
			
		||||
      var json;
 | 
			
		||||
      var sql;
 | 
			
		||||
@ -441,7 +441,9 @@ function wrap(db, dir, dbsMap) {
 | 
			
		||||
        delete data[camelCase(col.name)];
 | 
			
		||||
      });
 | 
			
		||||
 | 
			
		||||
      if (!oldId) {
 | 
			
		||||
        delete data[idnameCased];
 | 
			
		||||
      }
 | 
			
		||||
 | 
			
		||||
      if (!fieldable.length || Object.keys(data).length) {
 | 
			
		||||
        json = JSON.stringify(data);
 | 
			
		||||
@ -467,7 +469,7 @@ function wrap(db, dir, dbsMap) {
 | 
			
		||||
      return sql;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    DB.set = function (id, obj) {
 | 
			
		||||
    DB.set = function (id, obj, oldId) {
 | 
			
		||||
      obj.updatedAt = Date.now();
 | 
			
		||||
 | 
			
		||||
      var json = JSON.stringify(obj);
 | 
			
		||||
@ -485,7 +487,7 @@ function wrap(db, dir, dbsMap) {
 | 
			
		||||
        //var vals = [];
 | 
			
		||||
        // removes known fields from data
 | 
			
		||||
        data.updated_at = Date.now();
 | 
			
		||||
        var sql = strainUpdate(id, data/*, vals*/, sqlTpl);
 | 
			
		||||
        var sql = strainUpdate(id, data/*, vals*/, sqlTpl, oldId);
 | 
			
		||||
 | 
			
		||||
        //console.log('[debug] DB.set() sql:', sql);
 | 
			
		||||
        db.run(sql, /*vals*/[], function (err) {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user