From 0debdc5fd694033491fa780fbe0ae974a794c90e Mon Sep 17 00:00:00 2001 From: terakilobyte Date: Mon, 25 May 2015 19:02:09 -0400 Subject: [PATCH] Use middleware to migrate users --- app.js | 4 ++ controllers/user.js | 43 ++++++++++++++++++++++ seed_data/challenges/basic-javascript.json | 2 +- 3 files changed, 48 insertions(+), 1 deletion(-) diff --git a/app.js b/app.js index 55dc7bdb90..0c5012265b 100755 --- a/app.js +++ b/app.js @@ -216,6 +216,10 @@ app.use(function (req, res, next) { next(); }); +// User migration middleware + +app.use(userController.userMigration); + /** * Main routes. */ diff --git a/controllers/user.js b/controllers/user.js index 20e69b1825..57e581bd59 100644 --- a/controllers/user.js +++ b/controllers/user.js @@ -10,6 +10,49 @@ var _ = require('lodash'), resources = require('./resources'), R = require('ramda'); + + +/** + * + * @param req + * @param res + * @returns null + * Middleware to migrate users from fragmented challenge structure to unified + * challenge structure + */ +exports.userMigration = function(req, res, next) { + debug('user migration called'); + var user = req.user; + if (!user.migratedToUnifiedChallengeStructure && user) { + user.migratedToUnifiedChallengeStructure = true; + user.completedChallenges = R.filter(function (elem) { + return elem; // getting rid of undefined + }, R.concat( + user.completedCoursewares, + user.completedBonfires.map(function (bonfire) { + return ({ + completedDate: bonfire.completedDate, + _id: bonfire._id, + name: bonfire.name, + completedWith: bonfire.completedWith, + solution: bonfire.solution, + githubLink: '', + verified: false, + challengeType: 5 + }); + }) + )); + user.save(function (err) { + if (err) { + next(err); + } else { + next(req, res); + } + }) + } + next(req, res); +}; + /** * GET /signin * Siginin page. diff --git a/seed_data/challenges/basic-javascript.json b/seed_data/challenges/basic-javascript.json index 9129466cfd..4865ed9af2 100644 --- a/seed_data/challenges/basic-javascript.json +++ b/seed_data/challenges/basic-javascript.json @@ -132,7 +132,7 @@ "Complete \"Chapter 4: Debugging JavaScript\".", "Complete \"Chapter 5: Improving Network Performance\".", "Complete \"Chapter 6: Improving Performance\".", - "Complete \"Chapter 7: Memory Profiling\".", + "Complete \"Chapter 7: Memory Profiling\"." ], "challengeType": 2, "tests": [],