diff --git a/lib/collections/resources.js b/lib/collections/resources.js index cf3728d..0427ef4 100644 --- a/lib/collections/resources.js +++ b/lib/collections/resources.js @@ -4,13 +4,13 @@ var collection = require('../types/collection'); -module.exports = +var resources = module.exports = require('../types/collection') .use('/resources') .use(function (req, res, next, end) { - if(req.method === 'PUT') { + var resource = req.data , collectionPath = resource.path , properties = resource && resource.properties @@ -20,14 +20,19 @@ module.exports = , errs = [] ; - end(function (req, res, next) { - if(!collectionPath) return next(); + if(resource.$renameFrom && (resource.$renameFrom != resource.path)) { + rename = resource.$renameFrom; - collection.use(collectionPath).rename(collectionPath.replace('/', ''), function (err) { + // dont insert renameFrom + delete resource.$renameFrom; + + // rename + collection.use(rename).rename(resource.path.replace('/', ''), function (err) { next(err); }); - }) - + + return; + } properties && Object.keys(properties).forEach(function (key) { prop = properties[key]; @@ -55,8 +60,4 @@ module.exports = next(); } }) -; - -// TODO -// - Run migration on PUT (when name is deleted remove property) -// - PUT requests come back {task: {$renameFrom: 'title'}} \ No newline at end of file +; \ No newline at end of file diff --git a/lib/resource.js b/lib/resource.js index b512cf2..cf7699c 100644 --- a/lib/resource.js +++ b/lib/resource.js @@ -14,7 +14,7 @@ var types = require('./types') module.exports = function (req, res, next, end) { var resource = req.resource , method = req.method; - + // skip without a resource if(!resource) return next({status: 404}); diff --git a/lib/server.js b/lib/server.js index e1c697a..ca09bc7 100644 --- a/lib/server.js +++ b/lib/server.js @@ -35,7 +35,7 @@ var middleware = function (req, res, next) { */ middleware.listen = function (callback) { - var server = this.server = express.createServer(function (req, res, next) { + var server = this.server = express.createServer(function (req, res, next) { // by default pause the request req.pause(); @@ -136,7 +136,7 @@ middleware.listen = function (callback) { res.statusCode = err.status || 400; res.send({error: err}); } else { - next(err); + res.send(err); } }); diff --git a/test/resources.test.js b/test/resources.test.js index 7630397..1d28b59 100644 --- a/test/resources.test.js +++ b/test/resources.test.js @@ -66,14 +66,14 @@ describe('Application Resource Types', function(){ it('should rename the resource collection', function(done) { resources.get(function (e, all) { var res = all[0]; + res.$renameFrom = res.path; res.path = '/tasks'; todos.post({title: 'foo'}, function () { - resources.use('/' + res._id).put(res, function (err, upd) { + resources.use('/' + res._id).put(res, function (err) { unauthed.use('/tasks').get(function (ee, r) { - expect(r).to.exist; - client.use('/tasks').del(function () { - done(ee || e || err); + client.use('/tasks').del(function (err) { + done(); }) }) })