forked from HabitRPG/habitica
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
fix(achievement): Make Costume Contest repeatable
- Loading branch information
Showing
5 changed files
with
78 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
var migrationName = '20151116_costume_contest_to_number.js'; | ||
var authorName = 'Sabe'; // in case script author needs to know when their ... | ||
var authorUuid = '7f14ed62-5408-4e1b-be83-ada62d504931'; //... own data is done | ||
|
||
/* | ||
* Change Costume Contest achievement from Boolean to Number, so people can win repeatedly | ||
*/ | ||
|
||
var dbserver = 'localhost:27017'; // FOR TEST DATABASE | ||
// var dbserver = 'username:[email protected]:31379'; // FOR PRODUCTION DATABASE | ||
var dbname = 'habitrpg'; | ||
|
||
var mongo = require('mongoskin'); | ||
var _ = require('lodash'); | ||
|
||
var dbUsers = mongo.db(dbserver + '/' + dbname + '?auto_reconnect').collection('users'); | ||
|
||
// specify a query to limit the affected users (empty for all users): | ||
var query = { | ||
'achievements.costumeContest':true | ||
}; | ||
|
||
// specify fields we are interested in to limit retrieved data (empty if we're not reading data): | ||
var fields = { | ||
'achievements.costumeContest':1 | ||
}; | ||
|
||
console.warn('Updating users...'); | ||
var progressCount = 1000; | ||
var count = 0; | ||
dbUsers.findEach(query, fields, {batchSize:250}, function(err, user) { | ||
if (err) { return exiting(1, 'ERROR! ' + err); } | ||
if (!user) { | ||
console.warn('All appropriate users found and modified.'); | ||
return displayData(); | ||
} | ||
count++; | ||
|
||
// specify user data to change: | ||
var set = {'achievements.costumeContests':1}; | ||
|
||
dbUsers.update({_id:user._id}, {$set:set}); | ||
|
||
if (count%progressCount == 0) console.warn(count + ' ' + user._id); | ||
if (user._id == authorUuid) console.warn(authorName + ' processed'); | ||
}); | ||
|
||
|
||
function displayData() { | ||
console.warn('\n' + count + ' users processed\n'); | ||
return exiting(0); | ||
} | ||
|
||
|
||
function exiting(code, msg) { | ||
code = code || 0; // 0 = success | ||
if (code && !msg) { msg = 'ERROR!'; } | ||
if (msg) { | ||
if (code) { console.error(msg); } | ||
else { console.log( msg); } | ||
} | ||
process.exit(code); | ||
} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters