From 52fe9b77ff7434c31555e33905de7f5336c710da Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Mon, 28 Jan 2013 13:48:43 -0500 Subject: [PATCH] add server cron for preening stale accounts --- package.json | 3 ++- src/server/cron.coffee | 35 +++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) create mode 100644 src/server/cron.coffee diff --git a/package.json b/package.json index 2d5bc23cd1..a871dc2060 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,8 @@ "lodash": "*", "coffee-script": "*", "toobusy": "~0.2.0", - "underscore": "*" + "underscore": "*", + "mongoskin": "*" }, "private": true, "subdomain": "habitrpg", diff --git a/src/server/cron.coffee b/src/server/cron.coffee new file mode 100644 index 0000000000..c2bdca3f17 --- /dev/null +++ b/src/server/cron.coffee @@ -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]") \ No newline at end of file