|
|
@@ -1,6 +1,7 @@
|
|
|
{db, ObjectId} = require "./mongojs"
|
|
|
UpdateCompressor = require "./UpdateCompressor"
|
|
|
logger = require "logger-sharelatex"
|
|
|
+async = require "async"
|
|
|
|
|
|
module.exports = HistoryManager =
|
|
|
getLastCompressedUpdate: (doc_id, callback = (error, update) ->) ->
|
|
|
@@ -25,15 +26,19 @@ module.exports = HistoryManager =
|
|
|
else
|
|
|
callback null, null
|
|
|
|
|
|
- insertCompressedUpdates: (doc_id, docUpdates, callback = (error) ->) ->
|
|
|
- db.docHistory.update {
|
|
|
- doc_id: ObjectId(doc_id)
|
|
|
- }, {
|
|
|
- $push:
|
|
|
- docUpdates:
|
|
|
- $each: docUpdates
|
|
|
- }, {
|
|
|
- upsert: true
|
|
|
+ insertCompressedUpdates: (doc_id, updates, callback = (error) ->) ->
|
|
|
+ jobs = []
|
|
|
+ for update in updates
|
|
|
+ do (update) ->
|
|
|
+ jobs.push (callback) -> HistoryManager.insertCompressedUpdate doc_id, update, callback
|
|
|
+ async.series jobs, callback
|
|
|
+
|
|
|
+ insertCompressedUpdate: (doc_id, update, callback = (error) ->) ->
|
|
|
+ logger.log doc_id: doc_id, update: update, "inserting compressed update"
|
|
|
+ db.docHistory.insert {
|
|
|
+ doc_id: ObjectId(doc_id.toString())
|
|
|
+ op: update.op
|
|
|
+ meta: update.meta
|
|
|
}, callback
|
|
|
|
|
|
compressAndSaveRawUpdates: (doc_id, rawUpdates, callback = (error) ->) ->
|
|
|
@@ -41,12 +46,9 @@ module.exports = HistoryManager =
|
|
|
if length == 0
|
|
|
return callback()
|
|
|
|
|
|
-
|
|
|
HistoryManager.popLastCompressedUpdate doc_id, (error, lastCompressedUpdate) ->
|
|
|
return callback(error) if error?
|
|
|
-
|
|
|
compressedUpdates = UpdateCompressor.compressRawUpdates lastCompressedUpdate, rawUpdates
|
|
|
-
|
|
|
HistoryManager.insertCompressedUpdates doc_id, compressedUpdates, (error) ->
|
|
|
return callback(error) if error?
|
|
|
logger.log doc_id: doc_id, rawUpdatesLength: length, compressedUpdatesLength: compressedUpdates.length, "compressed doc updates"
|