| 123456789101112131415161718192021222324252627282930313233 |
- Settings = require('settings-sharelatex')
- rclient = require("redis-sharelatex").createClient(Settings.redis.web)
- async = require "async"
- module.exports = WebRedisManager =
- getPendingUpdatesForDoc : (doc_id, callback)->
- multi = rclient.multi()
- multi.lrange "PendingUpdates:#{doc_id}", 0 , -1
- multi.del "PendingUpdates:#{doc_id}"
- multi.exec (error, replys) ->
- return callback(error) if error?
- jsonUpdates = replys[0]
- updates = []
- for jsonUpdate in jsonUpdates
- try
- update = JSON.parse jsonUpdate
- catch e
- return callback e
- updates.push update
- callback error, updates
- getUpdatesLength: (doc_id, callback)->
- rclient.llen "PendingUpdates:#{doc_id}", callback
- pushUncompressedHistoryOp: (project_id, doc_id, op, callback = (error, length) ->) ->
- jsonOp = JSON.stringify op
- async.parallel [
- (cb) -> rclient.rpush "UncompressedHistoryOps:#{doc_id}", jsonOp, cb
- (cb) -> rclient.sadd "DocsWithHistoryOps:#{project_id}", doc_id, cb
- ], (error, results) ->
- return callback(error) if error?
- [length, _] = results
- callback(error, length)
|