Merge pull request #6033 from overleaf/bg-add-recover-doc-script

[web] add script to recover dangling docs from redis

GitOrigin-RevId: 2fca3d6b27cb35c6ee6cb1f32588ab7390a63d3f
This commit is contained in:
Thomas
2021-12-08 11:03:35 +01:00
committed by Copybot
parent abbacd71b7
commit ee08ace46b
2 changed files with 176 additions and 8 deletions
@@ -3,20 +3,27 @@ const Path = require('path')
const ProjectEntityHandler = require('./ProjectEntityHandler')
const ProjectEntityUpdateHandler = require('./ProjectEntityUpdateHandler')
// generate a new name based on the original, with an optional label.
// e.g. origname-20210101-122345.tex (default)
// origname-restored-20210101-122345.tex (label="restored")
function generateRestoredName(docName, label) {
const formattedTimestamp = new Date()
.toISOString()
.replace('T', '-')
.replace(/[^0-9-]/g, '')
const extension = Path.extname(docName)
const basename =
Path.basename(docName, extension) + (label ? `-${label}` : '')
return `${basename}-${formattedTimestamp}${extension}`
}
async function restoreDeletedDoc(projectId, docId, docName, userId) {
const deletedDoc = await ProjectEntityHandler.promises.getDoc(
projectId,
docId,
{ include_deleted: true }
)
const formattedTimestamp = new Date()
.toISOString()
.replace('T', '-')
.replace(/[^0-9-]/g, '')
const extension = Path.extname(docName)
const basename = Path.basename(docName, extension)
const deletedDocName = `${basename}-${formattedTimestamp}${extension}`
const deletedDocName = generateRestoredName(docName)
return await ProjectEntityUpdateHandler.promises.addDocWithRanges(
projectId,
null,
@@ -29,6 +36,7 @@ async function restoreDeletedDoc(projectId, docId, docName, userId) {
module.exports = {
restoreDeletedDoc: callbackify(restoreDeletedDoc),
generateRestoredName,
promises: {
restoreDeletedDoc,
},