|
@@ -5,6 +5,8 @@ logger = require "logger-sharelatex"
|
|
|
Metrics = require "./Metrics"
|
|
Metrics = require "./Metrics"
|
|
|
HistoryManager = require "./HistoryManager"
|
|
HistoryManager = require "./HistoryManager"
|
|
|
WebRedisManager = require "./WebRedisManager"
|
|
WebRedisManager = require "./WebRedisManager"
|
|
|
|
|
+Errors = require "./Errors"
|
|
|
|
|
+RangesManager = require "./RangesManager"
|
|
|
|
|
|
|
|
module.exports = DocumentManager =
|
|
module.exports = DocumentManager =
|
|
|
getDoc: (project_id, doc_id, _callback = (error, lines, version, alreadyLoaded) ->) ->
|
|
getDoc: (project_id, doc_id, _callback = (error, lines, version, alreadyLoaded) ->) ->
|
|
@@ -83,7 +85,6 @@ module.exports = DocumentManager =
|
|
|
DocumentManager.flushAndDeleteDoc project_id, doc_id, (error) ->
|
|
DocumentManager.flushAndDeleteDoc project_id, doc_id, (error) ->
|
|
|
return callback(error) if error?
|
|
return callback(error) if error?
|
|
|
callback null
|
|
callback null
|
|
|
-
|
|
|
|
|
|
|
|
|
|
flushDocIfLoaded: (project_id, doc_id, _callback = (error) ->) ->
|
|
flushDocIfLoaded: (project_id, doc_id, _callback = (error) ->) ->
|
|
|
timer = new Metrics.Timer("docManager.flushDocIfLoaded")
|
|
timer = new Metrics.Timer("docManager.flushDocIfLoaded")
|
|
@@ -119,6 +120,22 @@ module.exports = DocumentManager =
|
|
|
RedisManager.removeDocFromMemory project_id, doc_id, (error) ->
|
|
RedisManager.removeDocFromMemory project_id, doc_id, (error) ->
|
|
|
return callback(error) if error?
|
|
return callback(error) if error?
|
|
|
callback null
|
|
callback null
|
|
|
|
|
+
|
|
|
|
|
+ acceptChange: (project_id, doc_id, change_id, _callback = (error) ->) ->
|
|
|
|
|
+ timer = new Metrics.Timer("docManager.acceptChange")
|
|
|
|
|
+ callback = (args...) ->
|
|
|
|
|
+ timer.done()
|
|
|
|
|
+ _callback(args...)
|
|
|
|
|
+
|
|
|
|
|
+ DocumentManager.getDoc project_id, doc_id, (error, lines, version, ranges) ->
|
|
|
|
|
+ return callback(error) if error?
|
|
|
|
|
+ if !lines? or !version?
|
|
|
|
|
+ return callback(new Errors.NotFoundError("document not found: #{doc_id}"))
|
|
|
|
|
+ RangesManager.acceptChange change_id, ranges, (error, new_ranges) ->
|
|
|
|
|
+ return callback(error) if error?
|
|
|
|
|
+ RedisManager.updateDocument doc_id, lines, version, [], new_ranges, (error) ->
|
|
|
|
|
+ return callback(error) if error?
|
|
|
|
|
+ callback()
|
|
|
|
|
|
|
|
getDocWithLock: (project_id, doc_id, callback = (error, lines, version) ->) ->
|
|
getDocWithLock: (project_id, doc_id, callback = (error, lines, version) ->) ->
|
|
|
UpdateManager = require "./UpdateManager"
|
|
UpdateManager = require "./UpdateManager"
|
|
@@ -139,3 +156,7 @@ module.exports = DocumentManager =
|
|
|
flushAndDeleteDocWithLock: (project_id, doc_id, callback = (error) ->) ->
|
|
flushAndDeleteDocWithLock: (project_id, doc_id, callback = (error) ->) ->
|
|
|
UpdateManager = require "./UpdateManager"
|
|
UpdateManager = require "./UpdateManager"
|
|
|
UpdateManager.lockUpdatesAndDo DocumentManager.flushAndDeleteDoc, project_id, doc_id, callback
|
|
UpdateManager.lockUpdatesAndDo DocumentManager.flushAndDeleteDoc, project_id, doc_id, callback
|
|
|
|
|
+
|
|
|
|
|
+ acceptChangeWithLock: (project_id, doc_id, change_id, callback = (error) ->) ->
|
|
|
|
|
+ UpdateManager = require "./UpdateManager"
|
|
|
|
|
+ UpdateManager.lockUpdatesAndDo DocumentManager.acceptChange, project_id, doc_id, change_id, callback
|