RealTimeRedisManager.coffee 854 B

123456789101112131415161718192021222324252627
  1. Settings = require('settings-sharelatex')
  2. rclient = require("redis-sharelatex").createClient(Settings.redis.realtime)
  3. Keys = Settings.redis.realtime.key_schema
  4. logger = require('logger-sharelatex')
  5. module.exports = RealTimeRedisManager =
  6. getPendingUpdatesForDoc : (doc_id, callback)->
  7. multi = rclient.multi()
  8. multi.lrange Keys.pendingUpdates({doc_id}), 0 , -1
  9. multi.del Keys.pendingUpdates({doc_id})
  10. multi.exec (error, replys) ->
  11. return callback(error) if error?
  12. jsonUpdates = replys[0]
  13. updates = []
  14. for jsonUpdate in jsonUpdates
  15. try
  16. update = JSON.parse jsonUpdate
  17. catch e
  18. return callback e
  19. updates.push update
  20. callback error, updates
  21. getUpdatesLength: (doc_id, callback)->
  22. rclient.llen Keys.pendingUpdates({doc_id}), callback
  23. sendData: (data) ->
  24. rclient.publish "applied-ops", JSON.stringify(data)