From 61d0f51de7ef4b8337a0eceeab61daa553b7abd2 Mon Sep 17 00:00:00 2001 From: Tyler Renelle Date: Mon, 12 Aug 2013 20:05:41 -0400 Subject: [PATCH] remove hydrate-skips, cleanup api revive --- src/app/misc.coffee | 6 +++--- src/server/api.coffee | 17 +++++++++-------- 2 files changed, 12 insertions(+), 11 deletions(-) diff --git a/src/app/misc.coffee b/src/app/misc.coffee index 83c7489935..ada432134f 100644 --- a/src/app/misc.coffee +++ b/src/app/misc.coffee @@ -4,17 +4,17 @@ items = require('habitrpg-shared/script/items').items helpers = require('habitrpg-shared/script/helpers') module.exports.batchTxn = batchTxn = (model, cb, options={}) -> - _.defaults options, {user: model.at("_user"), hydrate: true, cron: false, done: ->} + _.defaults options, {user: model.at("_user"), cron: false, done: ->} {user} = options # see https://github.com/codeparty/racer/issues/116 - # But sometimes we get the exact opposite effect if we hydrate. I don't understand it, and I can't wait to start using Mongoose instead. - uObj = if options.hydrate then helpers.hydrate(user.get()) else user.get() + uObj = helpers.hydrate user.get() batch = set: (k,v) -> helpers.dotSet(k,v,uObj); paths[k] = true get: (k) -> helpers.dotGet(k,uObj) paths = {} model._dontPersist = true ret = cb uObj, paths, batch + console.log {cron: options.cron} _.each paths, (v,k) -> user.pass({cron:options.cron}).set(k,batch.get(k));true model._dontPersist = false # some hackery in our own branched racer-db-mongo, see findAndModify of lefnire/racer-db-mongo#habitrpg index.js diff --git a/src/server/api.coffee b/src/server/api.coffee index 9111a1d24f..ade8058fdf 100644 --- a/src/server/api.coffee +++ b/src/server/api.coffee @@ -64,7 +64,7 @@ score = (model, user, taskId, direction, done) -> tObj = uObj.tasks[taskId] delta = algos.score(uObj, tObj, direction, {paths}) #, {user, done} - , {user, done, hydrate: false} + , {user, done} delta ### @@ -326,16 +326,17 @@ api.cron = (req, res, next) -> misc.batchTxn req.getModel(), (uObj, paths) -> uObj = helpers.derbyUserToAPI(user) algos.cron uObj, {paths} - , {user, done:next, cron:true, hydrate: false} + , {user, done:next, cron:true} api.revive = (req, res, next) -> {user} = req.habit - [uObj, paths] = [user.get(), {}] - algos.revive uObj, {paths} - setOps = [] - _.each paths, (v,k) -> - setOps.push ((reviveCb) -> user.set k, helpers.dotGet(k,uObj), reviveCb) - async.series setOps, next + done = -> + req.habit.result = data: helpers.derbyUserToAPI(user) + next() + misc.batchTxn req.getModel(), (uObj, paths) -> + algos.revive uObj, {paths} + , {user, done} + ### ------------------------------------------------------------------------