overleaf/services/track-changes/app/coffee/HttpController.coffee
2015-08-06 17:09:36 -03:00

83 lines
No EOL
2.9 KiB
CoffeeScript

UpdatesManager = require "./UpdatesManager"
DiffManager = require "./DiffManager"
PackManager = require "./PackManager"
RestoreManager = require "./RestoreManager"
logger = require "logger-sharelatex"
DocArchiveManager = require "./DocArchiveManager"
module.exports = HttpController =
flushDoc: (req, res, next = (error) ->) ->
doc_id = req.params.doc_id
project_id = req.params.project_id
logger.log project_id: project_id, doc_id: doc_id, "compressing doc history"
UpdatesManager.processUncompressedUpdatesWithLock project_id, doc_id, (error) ->
return next(error) if error?
res.send 204
flushProject: (req, res, next = (error) ->) ->
project_id = req.params.project_id
logger.log project_id: project_id, "compressing project history"
UpdatesManager.processUncompressedUpdatesForProject project_id, (error) ->
return next(error) if error?
res.send 204
packDoc: (req, res, next = (error) ->) ->
doc_id = req.params.doc_id
logger.log doc_id: doc_id, "packing doc history"
PackManager.packDocHistory doc_id, (error) ->
return next(error) if error?
res.send 204
getDiff: (req, res, next = (error) ->) ->
doc_id = req.params.doc_id
project_id = req.params.project_id
if req.query.from?
from = parseInt(req.query.from, 10)
else
from = null
if req.query.to?
to = parseInt(req.query.to, 10)
else
to = null
logger.log project_id, doc_id: doc_id, from: from, to: to, "getting diff"
DiffManager.getDiff project_id, doc_id, from, to, (error, diff) ->
return next(error) if error?
res.send JSON.stringify(diff: diff)
getUpdates: (req, res, next = (error) ->) ->
project_id = req.params.project_id
if req.query.before?
before = parseInt(req.query.before, 10)
if req.query.min_count?
min_count = parseInt(req.query.min_count, 10)
UpdatesManager.getSummarizedProjectUpdates project_id, before: before, min_count: min_count, (error, updates, nextBeforeTimestamp) ->
return next(error) if error?
res.send JSON.stringify
updates: updates
nextBeforeTimestamp: nextBeforeTimestamp
restore: (req, res, next = (error) ->) ->
{doc_id, project_id, version} = req.params
user_id = req.headers["x-user-id"]
version = parseInt(version, 10)
RestoreManager.restoreToBeforeVersion project_id, doc_id, version, user_id, (error) ->
return next(error) if error?
res.send 204
archiveProject: (req, res, next = (error) ->) ->
project_id = req.params.project_id
logger.log project_id: project_id, "archiving all track changes to s3"
DocArchiveManager.archiveAllDocsChanges project_id, (error) ->
return next(error) if error?
res.send 204
unArchiveProject: (req, res, next = (error) ->) ->
project_id = req.params.project_id
logger.log project_id: project_id, "unarchiving all track changes from s3"
DocArchiveManager.unArchiveAllDocsChanges project_id, (error) ->
return next(error) if error?
res.send 204