mirror of
https://github.com/overleaf/overleaf.git
synced 2025-04-20 06:13:40 +00:00
Merge pull request #3316 from overleaf/jpa-script-restore-soft-deleted-docs
[scripts] restore_soft_deleted_docs: port the script from the dev-manual GitOrigin-RevId: e445cfad0d0f04275b3899c34b7963ddb29d4444
This commit is contained in:
parent
f2eb4893fe
commit
04c35c5a34
1 changed files with 59 additions and 0 deletions
59
services/web/scripts/restore_soft_deleted_docs.js
Normal file
59
services/web/scripts/restore_soft_deleted_docs.js
Normal file
|
@ -0,0 +1,59 @@
|
|||
const { waitForDb } = require('../app/src/infrastructure/mongodb')
|
||||
const ProjectEntityUpdateHandler = require('../app/src/Features/Project/ProjectEntityUpdateHandler')
|
||||
const ProjectEntityHandler = require('../app/src/Features/Project/ProjectEntityHandler')
|
||||
const ProjectGetter = require('../app/src/Features/Project/ProjectGetter')
|
||||
|
||||
const ARGV = process.argv.slice(2)
|
||||
const DEVELOPER_USER_ID = ARGV.shift()
|
||||
const PROJECT_ID = ARGV.shift()
|
||||
const FILE_NAMES_TO_RESTORE = ARGV
|
||||
|
||||
async function main() {
|
||||
const project = await ProjectGetter.promises.getProject(PROJECT_ID, {
|
||||
deletedDocs: 1
|
||||
})
|
||||
const docsToRestore = project.deletedDocs.filter(doc =>
|
||||
FILE_NAMES_TO_RESTORE.includes(doc.name)
|
||||
)
|
||||
for (const deletedDoc of docsToRestore) {
|
||||
const doc = await new Promise((resolve, reject) => {
|
||||
ProjectEntityHandler.getDoc(
|
||||
PROJECT_ID,
|
||||
deletedDoc._id,
|
||||
{
|
||||
include_deleted: true
|
||||
},
|
||||
(err, lines, rev, version, ranges) => {
|
||||
if (err) return reject(err)
|
||||
resolve({ lines, ranges })
|
||||
}
|
||||
)
|
||||
})
|
||||
|
||||
const newDoc = await new Promise((resolve, reject) => {
|
||||
ProjectEntityUpdateHandler.addDocWithRanges(
|
||||
PROJECT_ID,
|
||||
null,
|
||||
`${new Date().toISOString().replace(/:/g, '-')}-${deletedDoc.name}`,
|
||||
doc.lines,
|
||||
doc.ranges,
|
||||
DEVELOPER_USER_ID,
|
||||
(err, doc, folderId) => {
|
||||
if (err) return reject(err)
|
||||
resolve({ doc, folderId })
|
||||
}
|
||||
)
|
||||
})
|
||||
console.log(newDoc)
|
||||
}
|
||||
}
|
||||
|
||||
waitForDb()
|
||||
.then(main)
|
||||
.then(() => {
|
||||
process.exit(0)
|
||||
})
|
||||
.catch(error => {
|
||||
console.error(error)
|
||||
process.exit(1)
|
||||
})
|
Loading…
Add table
Reference in a new issue