codecombat/scripts/mongodb/migrations/2014-04-22-migrate-emails.js
2014-05-08 15:56:18 -07:00

35 lines
No EOL
1.3 KiB
JavaScript

// Did not migrate anonymous users because they get their properties setup on signup.
// migrate the most common subscription configs with mass update commands
db.users.update({anonymous:false, emailSubscriptions:['announcement', 'notification'], emails:{$exists:false}}, {$set:{emails:{}}}, {multi:true});
db.users.update({anonymous:false, emailSubscriptions:[], emails:{$exists:false}}, {$set:{emails:{anyNotes:{enabled:false}, generalNews:{enabled:false}}}}, {multi:true});
// migrate the rest one by one
emailMap = {
announcement: 'generalNews',
developer: 'archmageNews',
tester: 'adventurerNews',
level_creator: 'artisanNews',
article_editor: 'scribeNews',
translator: 'diplomatNews',
support: 'ambassadorNews',
notification: 'anyNotes'
};
db.users.find({anonymous:false, emails:{$exists:false}}).forEach(function(u) {
emails = {anyNotes:{enabled:false}, generalNews:{enabled:false}};
var oldEmailSubs = u.emailSubscriptions || ['notification', 'announcement'];
for(var email in oldEmailSubs) {
var oldEmailName = oldEmailSubs[email];
var newEmailName = emailMap[oldEmailName];
if(!newEmailName) {
print('STOP, COULD NOT FIND EMAIL NAME', oldEmailName);
return false;
}
emails[newEmailName] = {enabled:true};
}
u.emails = emails;
db.users.save(u);
});
// Done. No STOP error when this was run.