From 3340ee767d2d5d8196e84a8fb735b5a27acefd01 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Tue, 26 Mar 2013 19:38:03 -0700 Subject: [PATCH] pets: @WIP add migration script from old to new system (not working) --- migrations/20130326_migrate_pets.js | 89 +++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) create mode 100644 migrations/20130326_migrate_pets.js diff --git a/migrations/20130326_migrate_pets.js b/migrations/20130326_migrate_pets.js new file mode 100644 index 0000000000..ecbc414afc --- /dev/null +++ b/migrations/20130326_migrate_pets.js @@ -0,0 +1,89 @@ +/** + * Migrate old pets to new system + */ +// mongo habitrpg ./node_modules/underscore/underscore.js ./migrations/20130326_migrate_pets.js + +var mapping = { + bearcub: {name:'BearCub', modifier: 'Base'}, + cactus: {name:'Cactus', modifier:'Base'}, + dragon: {name:'Dragon', modifier:'Base'}, + flyingpig: {name:'FlyingPig', modifier:'Base'}, + fox: {name:'Fox', modifier:'Base'}, + lioncub: {name:'LionCub', modifier:'Base'}, + pandacub: {name:'PandaCub', modifier:'Base'}, + tigercub: {name:'TigerCub', modifier:'Base'}, + wolfBorder: {name:'Wolf', modifier:'Base'}, + wolfDesert: {name:'Wolf', modifier:'Desert'}, + wolfGolden: {name:'Wolf', modifier:'Golden'}, + wolfRed: {name:'Wolf', modifier:'Red'}, + wolfShade: {name:'Wolf', modifier:'Shade'}, + wolfSkeleton: {name:'Wolf', modifier:'Skeleton'}, + wolfVeteran: {name:'Wolf', modifier:'Veteran'}, + wolfWhite: {name:'Wolf', modifier:'White'}, + wolfZombie: {name:'Wolf', modifier:'Zombie'} +} + +/** + == Old Style == + pet: Object + icon: "Pet-Wolf-White.png" + index: 14 + name: "wolfWhite" + text: "White Wolf" + value: 3 + pets: Object + bearcub: true + cactus: true + + == New Style == + currentPet: Object + modifier: "Red" + name: "Wolf" + notes: "Find some Hatching Powder to sprinkle on this egg, and one day it will hatch into a loyal pet." + str: "Wolf-Red" + text: "Wolf" + value: 3 + pets: Array + 0: "PandaCub-Base" + 1: "Wolf-Base" + */ + + +db.users.find().forEach(function(user){ + if (!user.items || (!user.items.pets && !user.items.pet)) return; + + // migrate items.pet to items.currentPet + if (!!user.items.pet) { + var oldPet = user.items.pet, + mapped = mapping[oldPet.name]; + user.items.currentPet = { + modifier: mapped.modifier, + name: mapped.name, + str: mapped.name + "-" + mapped.modifier, + text: '' // FIXME? + } + delete user.items.pet + } + + // migrate items.pets + if (!!user.items.pets) { + var newPets = []; + _.each(user.items.pets, function(val, key){ + if (_.isNumber(key)) throw "Error: User appears already migrated, this shouldn't be happening!" + newPets.push(mapping[key].name + "-" + mapping[key].modifier); + }); + user.items.pets = newPets; + } + + try { + db.users.update( + {_id:user._id}, + {$set: + { 'items' : user.items } + }, + {multi:true} + ); + } catch(e) { + print(e); + } +}) \ No newline at end of file