From 182ce5c48da3df38fcf7a2dffa93d56e769794ce Mon Sep 17 00:00:00 2001 From: Marcel Klehr Date: Wed, 18 Sep 2013 16:04:10 +0200 Subject: [PATCH] API: fix createGroup for mapper endpoint for cases when a mapped group has been deleted fixes #1890 --- src/node/db/GroupManager.js | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/src/node/db/GroupManager.js b/src/node/db/GroupManager.js index 81b0cb9ef..82c14c39d 100644 --- a/src/node/db/GroupManager.js +++ b/src/node/db/GroupManager.js @@ -215,25 +215,32 @@ exports.createGroupIfNotExistsFor = function(groupMapper, callback) { if(ERR(err, callback)) return; + // there is a group for this mapper + if(groupID) { + exports.doesGroupExist(groupID, function(err, exists) { + if(ERR(err, callback)) return; + if(exists) return callback(null, {groupID: groupID}); + + // hah, the returned group doesn't exist, let's create one + createGroupForMapper(callback) + }) + } //there is no group for this mapper, let's create a group - if(groupID == null) - { + else { + createGroupForMapper(callback) + } + + function createGroupForMapper(cb) { exports.createGroup(function(err, responseObj) { - if(ERR(err, callback)) return; + if(ERR(err, cb)) return; //create the mapper entry for this group db.set("mapper2group:"+groupMapper, responseObj.groupID); - callback(null, responseObj); + cb(null, responseObj); }); } - //there is a group for this mapper, let's return it - else - { - if(ERR(err, callback)) return; - callback(null, {groupID: groupID}); - } }); }