From d530e387802ed46694acbd6670abfa8c6bde0783 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Wed, 25 Dec 2013 18:34:27 -0700 Subject: [PATCH] apology-gems and restore-streaks --- migrations/20131104_restore_lost_task_data.js | 2 +- migrations/20131225_restore_streaks.js | 32 +++++++++++++++++++ migrations/apology_gems.js | 1 + 3 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 migrations/20131225_restore_streaks.js create mode 100644 migrations/apology_gems.js diff --git a/migrations/20131104_restore_lost_task_data.js b/migrations/20131104_restore_lost_task_data.js index 02095383f5..9312ae8a76 100644 --- a/migrations/20131104_restore_lost_task_data.js +++ b/migrations/20131104_restore_lost_task_data.js @@ -13,7 +13,7 @@ var liveUsers = mongo.db('localhost:27017/habitrpg_new?auto_reconnect').collecti backupUsers.count(function(err, count){ if (err) return console.error(err); - backupUsers.findEach({}, {batchSize:10}, function(err, before){ + backupUsers.findEach({}, {batchSize:250}, function(err, before){ if (err) return console.error(err); if (!before) return console.log('!before'); liveUsers.findById(before._id, function(err, after){ diff --git a/migrations/20131225_restore_streaks.js b/migrations/20131225_restore_streaks.js new file mode 100644 index 0000000000..a4817ada83 --- /dev/null +++ b/migrations/20131225_restore_streaks.js @@ -0,0 +1,32 @@ +// node .migrations/20131225_restore_streaks.js + +/** + * After the classes migration, users lost some history entries + */ +var mongo = require('mongoskin'); +var _ = require('lodash'); + +var backupUsers = mongo.db('localhost:27017/habitrpg_old?auto_reconnect').collection('users'); +var liveUsers = mongo.db('lefnire:mAdn3s5s@charlotte.mongohq.com:10015/habitrpg_large?auto_reconnect').collection('users'); + +var fields = {dailys:1,migration:1}; +var count = 0; +liveUsers.findEach({migration: {$ne:'20131225_restore_streaks'}}, fields, {batchSize:250}, function(err, after){ + if (!after) err = '!after'; + if (err) {count++;return console.error(err);} + + backupUsers.findById(after._id, fields, function(err, before){ + if (!before) err = '!before'; + if (err) {count++;return console.error(err);} + + _.each(before.dailys,function(d){ + var found = _.find(after.dailys,{id: d.id}); + if (found && !found.streak) found.streak = d.streak; + }) + + liveUsers.update({_id:after._id}, {$set:{dailys:after.dailys, migration:'20131225_restore_streaks'}, $inc:{_v:1}}); + //if (--count <= 0) console.log("DONE! " + after._id); + if (++count%1000 == 0) console.log(count); + if (after._id == '9') console.log('lefnire processed'); + }) +}); \ No newline at end of file diff --git a/migrations/apology_gems.js b/migrations/apology_gems.js new file mode 100644 index 0000000000..e22a428047 --- /dev/null +++ b/migrations/apology_gems.js @@ -0,0 +1 @@ +db.users.update({_id:{$in:['']}},{$inc:{balance:0.5}},{multi:true}); \ No newline at end of file