overleaf/services/document-updater/app/coffee/ProjectHistoryRedisManager.coffee

64 lines
2.3 KiB
CoffeeScript
Raw Normal View History

2018-03-09 09:14:14 -05:00
Settings = require('settings-sharelatex')
projectHistoryKeys = Settings.redis?.project_history?.key_schema
rclient = require("redis-sharelatex").createClient(Settings.redis.documentupdater)
logger = require('logger-sharelatex')
module.exports = ProjectHistoryRedisManager =
queueOps: (project_id, ops..., callback) ->
rclient.rpush projectHistoryKeys.projectHistoryOps({project_id}), ops..., callback
queueRenameEntity: (project_id, entity_type, entity_id, user_id, projectUpdate, callback) ->
projectUpdate =
pathname: projectUpdate.pathname
new_pathname: projectUpdate.newPathname
2018-03-09 09:14:14 -05:00
meta:
user_id: user_id
ts: new Date()
version: projectUpdate.version
projectUpdate[entity_type] = entity_id
2018-03-09 09:14:14 -05:00
logger.log {project_id, projectUpdate}, "queue rename operation to project-history"
jsonUpdate = JSON.stringify(projectUpdate)
2018-03-09 09:14:14 -05:00
ProjectHistoryRedisManager.queueOps project_id, jsonUpdate, callback
queueAddEntity: (project_id, entity_type, entitiy_id, user_id, projectUpdate, callback = (error) ->) ->
projectUpdate =
pathname: projectUpdate.pathname
docLines: projectUpdate.docLines
url: projectUpdate.url
2018-03-09 09:14:14 -05:00
meta:
user_id: user_id
ts: new Date()
version: projectUpdate.version
projectUpdate[entity_type] = entitiy_id
2018-03-09 09:14:14 -05:00
logger.log {project_id, projectUpdate}, "queue add operation to project-history"
jsonUpdate = JSON.stringify(projectUpdate)
2018-03-09 09:14:14 -05:00
ProjectHistoryRedisManager.queueOps project_id, jsonUpdate, callback
2018-04-13 09:13:18 -04:00
queueResyncProjectStructure: (project_id, projectHistoryId, docs, files, callback) ->
2018-03-09 09:14:14 -05:00
logger.log {project_id, docs, files}, "queue project structure resync"
projectUpdate =
2018-03-09 09:14:14 -05:00
resyncProjectStructure: { docs, files }
2018-04-13 09:13:18 -04:00
projectHistoryId: projectHistoryId
2018-03-09 09:14:14 -05:00
meta:
ts: new Date()
jsonUpdate = JSON.stringify projectUpdate
2018-03-09 09:14:14 -05:00
ProjectHistoryRedisManager.queueOps project_id, jsonUpdate, callback
2018-04-13 09:13:18 -04:00
queueResyncDocContent: (project_id, projectHistoryId, doc_id, lines, version, pathname, callback) ->
2018-03-09 09:14:14 -05:00
logger.log {project_id, doc_id, lines, version, pathname}, "queue doc content resync"
projectUpdate =
2018-03-09 09:14:14 -05:00
resyncDocContent:
content: lines.join("\n"),
version: version
2018-04-13 09:13:18 -04:00
projectHistoryId: projectHistoryId
2018-03-09 09:14:14 -05:00
path: pathname
doc: doc_id
meta:
ts: new Date()
jsonUpdate = JSON.stringify projectUpdate
2018-03-09 09:14:14 -05:00
ProjectHistoryRedisManager.queueOps project_id, jsonUpdate, callback