diff options
| author | Sean Fridman <fridman@mail.sfsu.edu> | 2015-04-09 16:00:21 -0400 |
|---|---|---|
| committer | Sean Fridman <fridman@mail.sfsu.edu> | 2015-04-09 16:00:21 -0400 |
| commit | c4d8ee7c431b3511bf26da68e952808b51d663c7 (patch) | |
| tree | ec578ac8bb116883e7f942b146663375d11445c3 /app/node_modules | |
| parent | 757f6992aea253b06cc4f65fa0dd7da71cf82135 (diff) | |
Add resource delete functionality to admin
Diffstat (limited to 'app/node_modules')
| -rw-r--r-- | app/node_modules/okadminview/index.js | 15 | ||||
| -rw-r--r-- | app/node_modules/okresource/index.js | 12 |
2 files changed, 22 insertions, 5 deletions
diff --git a/app/node_modules/okadminview/index.js b/app/node_modules/okadminview/index.js index 987fe51..a376df5 100644 --- a/app/node_modules/okadminview/index.js +++ b/app/node_modules/okadminview/index.js @@ -175,6 +175,21 @@ function OKAdminView(options) { } }); + router.delete('/:type/:id/', function deleteResource(req, res, next) { + var type = req.params.type; + var id = req.params.id; + var resource = resourceCache.get(type, id); + if (!resource) { + errorHandler(req, res)(new Error('No such resource ' + type)); + } else { + meta.get().then(function(metadata) { + resource.destroy(id).then(function() { + res.redirect(303, '../..'); + }).fail(errorHandler(req, res)); + }).fail(errorHandler(req, res)); + } + }); + return router; } } diff --git a/app/node_modules/okresource/index.js b/app/node_modules/okresource/index.js index febd1d5..0e8498f 100644 --- a/app/node_modules/okresource/index.js +++ b/app/node_modules/okresource/index.js @@ -91,14 +91,16 @@ OKResource.prototype.create = function(data) { }); }; -OKResource.prototype.destroy = function(data) { - data = data || {}; - var id = data[this.idField]; +OKResource.prototype.destroy = function(id) { + var db = this._db; + var type = this.type; + var query = {}; + query[this.idField] = id; return Q.promise(function(resolve, reject) { if (!id) { - reject(new Error('Data does not contain ID property')); + reject(new Error('No ID given')); } else { - this._db.remove(this.type, data.id, data).then(resolve).fail(reject); + db.remove(type, query).then(resolve).fail(reject); } }); }; |
