mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-11-14 22:23:42 +01:00
Merge pull request #28431 from overleaf/em-docupdater-get-ranges
Look in docupdater when obtaining comments for DSMP GitOrigin-RevId: acaead280f725da8e0c438d5b429fa983c3cad86
This commit is contained in:
@@ -140,6 +140,8 @@ app.get(
|
||||
HttpController.getComment
|
||||
)
|
||||
app.get('/project/:project_id/doc/:doc_id/peek', HttpController.peekDoc)
|
||||
app.get('/project/:project_id/ranges', HttpController.getProjectRanges)
|
||||
|
||||
// temporarily keep the GET method for backwards compatibility
|
||||
app.get('/project/:project_id/doc', HttpController.getProjectDocsAndFlushIfOld)
|
||||
// will migrate to the POST method of get_and_flush_if_old instead
|
||||
|
||||
@@ -181,6 +181,12 @@ async function getProjectLastUpdatedAt(req, res) {
|
||||
res.json({ lastUpdatedAt: timestamps.pop() })
|
||||
}
|
||||
|
||||
async function getProjectRanges(req, res) {
|
||||
const projectId = req.params.project_id
|
||||
const docs = await ProjectManager.promises.getProjectRanges(projectId)
|
||||
res.json({ docs })
|
||||
}
|
||||
|
||||
async function clearProjectState(req, res) {
|
||||
const projectId = req.params.project_id
|
||||
const timer = new Metrics.Timer('http.clearProjectState')
|
||||
@@ -537,6 +543,7 @@ module.exports = {
|
||||
peekDoc: expressify(peekDoc),
|
||||
getProjectDocsAndFlushIfOld: expressify(getProjectDocsAndFlushIfOld),
|
||||
getProjectLastUpdatedAt: expressify(getProjectLastUpdatedAt),
|
||||
getProjectRanges: expressify(getProjectRanges),
|
||||
clearProjectState: expressify(clearProjectState),
|
||||
appendToDoc: expressify(appendToDoc),
|
||||
setDoc: expressify(setDoc),
|
||||
|
||||
@@ -118,6 +118,16 @@ async function getProjectDocsAndFlushIfOld(
|
||||
return docs
|
||||
}
|
||||
|
||||
async function getProjectRanges(projectId) {
|
||||
const docIds = await RedisManager.promises.getDocIdsInProject(projectId)
|
||||
const docs = []
|
||||
for (const docId of docIds) {
|
||||
const ranges = await RedisManager.promises.getDocRanges(docId)
|
||||
docs.push({ id: docId, ranges })
|
||||
}
|
||||
return docs
|
||||
}
|
||||
|
||||
async function clearProjectState(projectId) {
|
||||
await RedisManager.promises.clearProjectState(projectId)
|
||||
}
|
||||
@@ -234,6 +244,7 @@ const ProjectManager = {
|
||||
queueFlushAndDeleteProject,
|
||||
getProjectDocsTimestamps,
|
||||
getProjectDocsAndFlushIfOld,
|
||||
getProjectRanges,
|
||||
clearProjectState,
|
||||
updateProjectWithLocks,
|
||||
}
|
||||
|
||||
@@ -296,6 +296,12 @@ const RedisManager = {
|
||||
}
|
||||
},
|
||||
|
||||
async getDocRanges(docId) {
|
||||
const json = await rclient.get(keys.ranges({ doc_id: docId }))
|
||||
const ranges = RedisManager._deserializeRanges(json)
|
||||
return ranges
|
||||
},
|
||||
|
||||
async getDocVersion(docId) {
|
||||
const result = await rclient.mget(keys.docVersion({ doc_id: docId }))
|
||||
let [version] = result || []
|
||||
|
||||
Reference in New Issue
Block a user