Add in methods for retrieving updates and doc version
This commit is contained in:
@@ -0,0 +1,8 @@
|
||||
module.exports = DiffManager =
|
||||
getDiff: (doc_id, fromDate, toDate, callback = (error, diff) ->) ->
|
||||
# Flush diff
|
||||
# Get doc content and version
|
||||
# Get updates from Mongo
|
||||
# Check version matches
|
||||
# Build diff
|
||||
# Return diff
|
||||
@@ -0,0 +1,21 @@
|
||||
request = require "request"
|
||||
logger = require "logger-sharelatex"
|
||||
Settings = require "settings-sharelatex"
|
||||
|
||||
module.exports = DocumentUpdaterManager =
|
||||
getDocument: (project_id, doc_id, callback = (error, content, version) ->) ->
|
||||
url = "#{Settings.apis.documentupdater.url}/project/#{project_id}/doc/#{doc_id}"
|
||||
logger.log project_id:project_id, doc_id: doc_id, "getting doc from document updater"
|
||||
request.get url, (error, res, body)->
|
||||
if error?
|
||||
return callback(error)
|
||||
if res.statusCode >= 200 and res.statusCode < 300
|
||||
try
|
||||
body = JSON.parse(body)
|
||||
catch error
|
||||
return callback(error)
|
||||
callback null, body.lines, body.version
|
||||
else
|
||||
error = new Error("doc updater returned a non-success status code: #{res.statusCode}")
|
||||
logger.error err: error, project_id:project_id, doc_id:doc_id, url: url, "error accessing doc updater"
|
||||
callback error
|
||||
@@ -37,4 +37,18 @@ module.exports = MongoManager =
|
||||
op: update.op
|
||||
meta: update.meta
|
||||
v: update.v
|
||||
}, callback
|
||||
}, callback
|
||||
|
||||
getUpdatesBetweenDates:(doc_id, fromDate, toDate, callback = (error, updates) ->) ->
|
||||
db.docHistory
|
||||
.find({
|
||||
doc_id: ObjectId(doc_id.toString())
|
||||
"meta.start_ts" : { $gte: fromDate }
|
||||
"meta.end_ts" : { $lte: toDate }
|
||||
})
|
||||
.sort( "meta.end_ts": -1 )
|
||||
.toArray callback
|
||||
|
||||
ensureIndices: (callback = (error) ->) ->
|
||||
db.docHistory.ensureIndex { doc_id: 1, "meta.start_ts": 1, "meta.end_ts": 1 }, callback
|
||||
|
||||
|
||||
Reference in New Issue
Block a user