ProjectHistoryRedisManager.coffee 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. Settings = require('settings-sharelatex')
  2. projectHistoryKeys = Settings.redis?.project_history?.key_schema
  3. rclient = require("redis-sharelatex").createClient(Settings.redis.documentupdater)
  4. logger = require('logger-sharelatex')
  5. module.exports = ProjectHistoryRedisManager =
  6. queueOps: (project_id, ops..., callback) ->
  7. rclient.rpush projectHistoryKeys.projectHistoryOps({project_id}), ops..., callback
  8. queueRenameEntity: (project_id, entity_type, entity_id, user_id, projectUpdate, callback) ->
  9. projectUpdate =
  10. pathname: projectUpdate.pathname
  11. new_pathname: projectUpdate.newPathname
  12. meta:
  13. user_id: user_id
  14. ts: new Date()
  15. version: projectUpdate.version
  16. projectUpdate[entity_type] = entity_id
  17. logger.log {project_id, projectUpdate}, "queue rename operation to project-history"
  18. jsonUpdate = JSON.stringify(projectUpdate)
  19. ProjectHistoryRedisManager.queueOps project_id, jsonUpdate, callback
  20. queueAddEntity: (project_id, entity_type, entitiy_id, user_id, projectUpdate, callback = (error) ->) ->
  21. projectUpdate =
  22. pathname: projectUpdate.pathname
  23. docLines: projectUpdate.docLines
  24. url: projectUpdate.url
  25. meta:
  26. user_id: user_id
  27. ts: new Date()
  28. version: projectUpdate.version
  29. projectUpdate[entity_type] = entitiy_id
  30. logger.log {project_id, projectUpdate}, "queue add operation to project-history"
  31. jsonUpdate = JSON.stringify(projectUpdate)
  32. ProjectHistoryRedisManager.queueOps project_id, jsonUpdate, callback
  33. queueResyncProjectStructure: (project_id, docs, files, callback) ->
  34. logger.log {project_id, docs, files}, "queue project structure resync"
  35. projectUpdate =
  36. resyncProjectStructure: { docs, files }
  37. meta:
  38. ts: new Date()
  39. jsonUpdate = JSON.stringify projectUpdate
  40. ProjectHistoryRedisManager.queueOps project_id, jsonUpdate, callback
  41. queueResyncDocContent: (project_id, doc_id, lines, version, pathname, callback) ->
  42. logger.log {project_id, doc_id, lines, version, pathname}, "queue doc content resync"
  43. projectUpdate =
  44. resyncDocContent:
  45. content: lines.join("\n"),
  46. version: version
  47. path: pathname
  48. doc: doc_id
  49. meta:
  50. ts: new Date()
  51. jsonUpdate = JSON.stringify projectUpdate
  52. ProjectHistoryRedisManager.queueOps project_id, jsonUpdate, callback