mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2024-11-27 17:45:40 -05:00
56 lines
1.5 KiB
CoffeeScript
56 lines
1.5 KiB
CoffeeScript
|
database = require '../server/commons/database'
|
||
|
mongoose = require 'mongoose'
|
||
|
log = require 'winston'
|
||
|
async = require 'async'
|
||
|
|
||
|
### SET UP ###
|
||
|
do (setupLodash = this) ->
|
||
|
GLOBAL._ = require 'lodash'
|
||
|
_.str = require 'underscore.string'
|
||
|
_.mixin _.str.exports()
|
||
|
GLOBAL.tv4 = require('tv4').tv4
|
||
|
|
||
|
database.connect()
|
||
|
|
||
|
User = require '../server/users/User'
|
||
|
Payment = require '../server/payments/Payment'
|
||
|
PaymentHandler = require '../server/payments/payment_handler'
|
||
|
|
||
|
t0 = new Date().getTime()
|
||
|
total = 100000
|
||
|
#testUsers = ['livelily+test31@gmail.com', 'livelily+test37@gmail.com']
|
||
|
if testUsers?
|
||
|
userQuery = emailLower: {$in: testUsers}
|
||
|
else
|
||
|
userQuery = $or: [
|
||
|
{stripe: {$exists: true}}
|
||
|
{'purchased.gems': {$gt: 0}}
|
||
|
]
|
||
|
User.count userQuery, (err, count) -> total = count
|
||
|
|
||
|
onFinished = ->
|
||
|
t1 = new Date().getTime()
|
||
|
runningTime = ((t1-t0)/1000/60/60).toFixed(2)
|
||
|
console.log "we finished in #{runningTime} hours"
|
||
|
process.exit()
|
||
|
|
||
|
userStream = User.find(userQuery).sort('_id').stream()
|
||
|
streamFinished = false
|
||
|
usersTotal = 0
|
||
|
usersFinished = 0
|
||
|
numberRunning = 0
|
||
|
doneWithUser = ->
|
||
|
++usersFinished
|
||
|
numberRunning -= 1
|
||
|
userStream.resume()
|
||
|
onFinished?() if streamFinished and usersFinished is usersTotal
|
||
|
|
||
|
userStream.on 'error', (err) -> log.error err
|
||
|
userStream.on 'close', -> streamFinished = true
|
||
|
userStream.on 'data', (user) ->
|
||
|
++usersTotal
|
||
|
numberRunning += 1
|
||
|
userStream.pause() if numberRunning > 20
|
||
|
user._id = user.get('_id')
|
||
|
PaymentHandler.recalculateGemsFor user, doneWithUser, true
|