diff --git a/seed/get-challenge-completion.js b/seed/get-challenge-completion.js new file mode 100644 index 0000000000..06688b1e2c --- /dev/null +++ b/seed/get-challenge-completion.js @@ -0,0 +1,46 @@ +/* eslint-disable no-process-exit */ + +/** + * Data creation script for academic data pushes. Run this script with + * node seed/get-challenge-completion.js >> ~/output.json + * For large data sets supply the flag --max_old_space_size=2000000 to node. + * Run from the root FCC directory. Beware, this will generate a very large file + * if you have a large user collection such as the production mongo db. +*/ + +require('dotenv').load(); +var secrets = require('../config/secrets'), + mongodb = require('mongodb'), + MongoClient = mongodb.MongoClient; + +MongoClient.connect(secrets.db, function(err, database) { + if (err) { + throw err; + } + var stream = database.collection('user') + .find({'completedChallenges': { $ne: null }, + 'isLocked': { $ne: true } }, + {'completedChallenges': true}) + .stream(); + console.log('['); + stream.on('data', function(results) { + if (!results.completedChallenges) { + // dud + } else { + var dataOut = []; + results.completedChallenges.forEach(function(challenge) { + dataOut.push({ + name: challenge.name, + completedDate: challenge.completedDate, + solution: challenge.solution + }); + }); + if (dataOut.length) { + console.log(JSON.stringify(dataOut) + ','); + } + } + }).on('end', function() { + console.log(']'); + process.exit(0); + }); +});