add server cron for preening stale accounts

This commit is contained in:
Tyler Renelle 2013-01-28 13:48:43 -05:00
parent c2fddaab49
commit 52fe9b77ff
2 changed files with 37 additions and 1 deletions

View file

@ -20,7 +20,8 @@
"lodash": "*",
"coffee-script": "*",
"toobusy": "~0.2.0",
"underscore": "*"
"underscore": "*",
"mongoskin": "*"
},
"private": true,
"subdomain": "habitrpg",

35
src/server/cron.coffee Normal file
View file

@ -0,0 +1,35 @@
moment = require('moment')
mongo = require("mongoskin")
_ = require('underscore')
module.exports.deleteStaleAccounts = () ->
unRegistered = { "auth.local": {$exists: false} , "auth.facebook": {$exists: false} }
registered = registered = { $or: [
{ 'auth.local': { $exists: true } },
{ 'auth.facebook': { $exists: true} }
]};
collection = mongo.db(process.env.NODE_DB_URI, {safe:true}).collection("users")
collection.count registered, (err, result) -> console.log("#{result} registered users [before]")
collection.count unRegistered, (err, result) -> console.log("#{result} un-registered users [before]")
isValidDate = (d) ->
return false if Object::toString.call(d) isnt "[object Date]"
not isNaN(d.getTime())
today = +new Date
collection.findEach unRegistered, (err, user) ->
throw err if err
return unless user?
lastCron = new Date(user.lastCron)
unless isValidDate(lastCron)
console.log user.lastCron
return
diff = Math.abs(moment(today).sod().diff(moment(lastCron).sod(), "days"))
if diff > 30
collection.remove {_id: user._id}, (err, res) -> throw err if err
collection.count registered, (err, result) -> console.log("#{result} registered users [after]")
collection.count unRegistered, (err, result) -> console.log("#{result} un-registered users [after]")