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