2014-08-29 09:41:56 +00:00
// node .migrations/20140829_change_headAccessory_to_eyewear.js
var migrationName = '20140829_change_headAccessory_to_eyewear' ;
var authorName = 'Alys' ; // in case script author needs to know when their ...
var authorUuid = 'd904bd62-da08-416b-a816-ba797c9ee265' ; //... own data is done
/ * *
2014-08-30 01:46:53 +00:00
* https : //github.com/HabitRPG/habitrpg/issues/3645
2014-08-29 09:41:56 +00:00
* /
var mongo = require ( 'mongoskin' ) ;
var _ = require ( 'lodash' ) ;
/////////////////// UNCOMMENT *ONE* OF THESE LINES: ///////////////////
// var liveUsers = mongo.db('lefnire:mAdn3s5s@charlotte.mongohq.com:10015/habitrpg_large?auto_reconnect').collection('users'); // @lefnire production?
// var liveUsers = mongo.db('localhost:27017/habitrpg_old?auto_reconnect').collection('users'); // @lefnire habitrpg_old
2014-08-30 01:46:53 +00:00
// var liveUsers = mongo.db('localhost:27017/habitrpg?auto_reconnect').collection('users'); // for local testing by script author (e.g., vagrant install)
2014-08-29 09:41:56 +00:00
var fields = { 'migration' : 1 ,
2014-08-30 01:46:53 +00:00
'items.gear.costume.headAccessory' : 1 ,
'items.gear.equipped.headAccessory' : 1 ,
'items.gear.owned.headAccessory_special_wondercon_black' : 1 ,
'items.gear.owned.headAccessory_special_wondercon_red' : 1 ,
'items.gear.owned.headAccessory_special_summerRogue' : 1 ,
'items.gear.owned.headAccessory_special_summerWarrior' : 1
} ;
2014-08-29 09:41:56 +00:00
var progressCount = 1000 ;
var count = 0 ;
liveUsers . findEach ( { $and : [
{ migration : { $ne : migrationName } } ,
{ $or : [
2014-08-30 01:46:53 +00:00
{ 'items.gear.owned.headAccessory_special_summerRogue' : { '$exists' : true } } ,
{ 'items.gear.owned.headAccessory_special_summerWarrior' : { '$exists' : true } } ,
{ 'items.gear.owned.headAccessory_special_wondercon_red' : { '$exists' : true } } ,
{ 'items.gear.owned.headAccessory_special_wondercon_black' : { '$exists' : true } }
2014-08-29 09:41:56 +00:00
] }
] } , fields , { batchSize : 250 } , function ( err , user ) {
2014-08-30 01:46:53 +00:00
count ++ ;
if ( ! user ) err = '!user' ;
if ( err ) { return console . error ( err ) ; }
2014-08-29 09:41:56 +00:00
2014-08-30 01:46:53 +00:00
var set = { 'migration' : migrationName } ;
var unset = { } ;
2014-08-29 09:41:56 +00:00
2014-08-30 01:46:53 +00:00
var oldToNew = {
'headAccessory_special_summerRogue' : 'eyewear_special_summerRogue' ,
'headAccessory_special_summerWarrior' : 'eyewear_special_summerWarrior' ,
'headAccessory_special_wondercon_red' : 'eyewear_special_wondercon_red' ,
'headAccessory_special_wondercon_black' : 'eyewear_special_wondercon_black'
} ;
2014-08-29 09:41:56 +00:00
2014-08-30 01:46:53 +00:00
// items.gear.costume, items.gear.equipped:
_ . each ( [ 'costume' , 'equipped' ] , function ( type ) {
_ . each ( oldToNew , function ( newName , oldName ) {
if ( user . items . gear [ type ] . headAccessory === oldName ) {
unset [ 'items.gear.' + type + '.headAccessory' ] = "" ;
set [ 'items.gear.' + type + '.eyewear' ] = newName ;
}
} ) ;
} ) ;
2014-08-29 09:41:56 +00:00
2014-08-30 01:46:53 +00:00
// items.gear.owned:
_ . each ( oldToNew , function ( newName , oldName ) {
if ( oldName in user . items . gear . owned ) {
unset [ 'items.gear.owned.' + oldName ] = "" ;
set [ 'items.gear.owned.' + newName ] = user . items . gear . owned [ oldName ] ;
}
} ) ;
2014-08-29 09:41:56 +00:00
2014-08-30 01:46:53 +00:00
//console.log(JSON.stringify(user, null, " "));
//console.log("set: " + JSON.stringify(set, null, " "));
//console.log("unset: " + JSON.stringify(unset, null, " "));
2014-08-29 09:41:56 +00:00
2014-08-30 01:46:53 +00:00
liveUsers . update ( { _id : user . _id } , { $unset : unset , $inc : { _v : 1 } } ) ;
liveUsers . update ( { _id : user . _id } , { $set : set , $inc : { _v : 1 } } ) ;
2014-08-29 09:41:56 +00:00
2014-08-30 01:46:53 +00:00
if ( count % progressCount == 0 ) console . log ( count + ' ' + user . _id ) ;
if ( user . _id == '9' ) console . log ( 'lefnire processed' ) ;
if ( user . _id == authorUuid ) console . log ( authorName + ' processed' ) ;
2014-08-29 09:41:56 +00:00
} ) ;