// Bulk create prepaid codes + email message // Usage: // mongo <address>:<port>/<database> <script file> -u <username> -p <password> var num = 10; var message = "Thanks for filling out the form. You can follow this link to enable your free subscription for teachers. If you have any questions or comments, please let me know."; var urlPrefix = "https://codecombat.com/account/subscription?_ppc="; var creatorID = "52f94443fcb334581466a992"; for (var i = 0; i < num; i++) { createPrepaid(); } function createPrepaid() { generateNewCode(function(code) { if (!code) { print("ERROR: no code"); return; } criteria = { creator: creatorID, type: 'subscription', maxRedeemers: 1 code: code, properties: { couponID: 'free' }, __v: 0 }; db.prepaids.insert(criteria); print(message + " " + urlPrefix + code); }); } function generateNewCode(done) { function tryCode() { code = createCode(8); criteria = {code: code}; if (db.prepaids.findOne(criteria)) { return tryCode(); } return done(code); } tryCode(); } function createCode(length) { var text = ""; var possible = "abcdefghijklmnopqrstuvwxyz0123456789"; for( var i=0; i < length; i++ ) text += possible.charAt(Math.floor(Math.random() * possible.length)); return text; }