Merge branch 'nonprofit-show' of https://github.com/FreeCodeCamp/freecodecamp into nonprofit-show

This commit is contained in:
Michael Q Larson
2015-04-15 00:12:27 -07:00

View File

@ -1,6 +1,5 @@
require('dotenv').load();
var mongodb = require('mongodb'),
User = require('../models/User.js'),
newChallenges = require('./challengeMapping.json'),
secrets = require('../config/secrets');
@ -8,28 +7,58 @@ var mongodb = require('mongodb'),
mongoose.connect(secrets.db);
var i = 1;
var stream = User.find({}).skip(0).limit(0).stream();
function userModelAssurity(cb) {
console.log('userModelAssurity');
var i = 1;
var stream = User.find({}).skip(0).limit(0).batchSize(20000).stream();
stream.on('data', function(user) {
stream.on('data', function (user) {
console.log(i++);
user.save()
})
.on('error', function (err) {
this.pause();
user.needsMigration = true;
user.save(function (err) {
if (err) {
console.log('woops');
}
this.resume();
}.bind(this));
})
.on('error', function (err) {
console.log(err);
}).on('close', function () {
}).on('close', function () {
console.log('done with set');
stream.destroy();
});
cb();
});
}
i = 1;
function migrateIt() {
console.log('migrateIt');
var dones = 0;
var done = function() {
dones++;
if (dones === 2) {
process.exit(0);
}
if (dones === 1) {
userModelMigration(done);
}
};
console.log('calling userModelAssurity');
userModelAssurity(done);
}
var stream = User.find({'user.needsMigration': true}).skip(0).limit(0).stream();
function userModelMigration(cb) {
stream.on('data', function (user) {
var i = 1;
var stream = User.find({needsMigration: true}).skip(0).limit(0)
.batchSize(20000).stream();
stream.on('data', function (user) {
console.log(i++);
if (user.challengesHash) {
this.pause();
console.log(i++);
user.needsMigration = false;
var oldChallenges = Object.keys(user.challengesHash).filter(function (key) {
if (user.challengesHash[key]) {
@ -61,16 +90,19 @@ stream.on('data', function (user) {
}
var self = this;
user.save(function(err) {
user.save(function (err) {
if (err) {
console.log('woops');
}
self.resume();
});
}).on('error', function (err) {
}).on('error', function (err) {
console.log(err);
}).on('close', function () {
}).on('close', function () {
console.log('done with set');
stream.destroy();
process.exit(0);
});
cb();
});
}
migrateIt();