habitica/migrations/20150906_groups_fix_leaders.js

49 lines
1.1 KiB
JavaScript
Raw Normal View History

2015-09-06 17:10:24 +00:00
/*
* Make sure leaders are existing users
*/
var mongo = require('mongoskin');
var dbserver = 'mongodb://url';
var dbname = 'dbname';
var countGroups = 0;
var countUsers = 0;
var db = mongo.db(dbserver + '/' + dbname + '?auto_reconnect');
var dbUsers = db.collection('users');
var dbGroups = db.collection('groups');
console.log('Begins work on db');
dbGroups.findEach({}, {_id: 1, members: 1, leader: 1}, {batchSize: 500}, function(err, group) {
if(err) throw err;
if(!group) return;
countGroups++;
console.log('Group: ', countGroups);
var members = group.members;
var leader = group.leader;
dbUsers.count({_id: group.leader}, function(err, count){
if(err) throw err;
// If leader has deleted account
if(count < 1 && (group._id !== 'habitrpg') && members && members[0]) {
2015-09-06 17:10:24 +00:00
dbGroups.update({
_id: group._id
}, {
$set: {
// Set first user as new leader
leader: members[0]
}
}, {
multi: false
}, function(err, res){
if(err) throw err;
console.log('Updated: ', res);
});
}
})
});