From f2e0a41f9c1ce0dc736507664d9dbe9ff581d55a Mon Sep 17 00:00:00 2001 From: Brian Gough Date: Mon, 27 Mar 2023 16:10:34 +0100 Subject: [PATCH] Merge pull request #12409 from overleaf/bg-restore-orphaned-docs add script to restore orphaned docs GitOrigin-RevId: d17ca801fa39ed6e6d02fa27c8f922c89fe5a2a4 --- services/web/scripts/restore_orphaned_docs.js | 46 +++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 services/web/scripts/restore_orphaned_docs.js diff --git a/services/web/scripts/restore_orphaned_docs.js b/services/web/scripts/restore_orphaned_docs.js new file mode 100644 index 0000000000..04754687db --- /dev/null +++ b/services/web/scripts/restore_orphaned_docs.js @@ -0,0 +1,46 @@ +const { waitForDb } = require('../app/src/infrastructure/mongodb') +const ProjectEntityRestoreHandler = require('../app/src/Features/Project/ProjectEntityRestoreHandler') +const ProjectEntityHandler = require('../app/src/Features/Project/ProjectEntityHandler') +const DocstoreManager = require('../app/src/Features/Docstore/DocstoreManager') + +const ARGV = process.argv.slice(2) +const DEVELOPER_USER_ID = ARGV.shift() +const PROJECT_ID = ARGV.shift() +const DOC_IDS_TO_RESTORE = ARGV + +async function main() { + const allDocs = await DocstoreManager.promises.getAllDocs(PROJECT_ID) + const docsToRestore = allDocs.filter(doc => + DOC_IDS_TO_RESTORE.includes(doc._id) + ) + + const docPaths = + await ProjectEntityHandler.promises.getAllDocPathsFromProjectById( + PROJECT_ID + ) + + for (const orphanedDoc of docsToRestore) { + console.log('Restoring doc: ', orphanedDoc._id) + if (docPaths[orphanedDoc._id]) { + console.log(`Doc already exists, skipping ${docPaths[orphanedDoc._id]}`) + continue + } + const newDoc = await ProjectEntityRestoreHandler.promises.restoreDeletedDoc( + PROJECT_ID, + orphanedDoc._id, + `restored-${orphanedDoc._id}-rev-${orphanedDoc.rev}.tex`, + DEVELOPER_USER_ID + ) + console.log(newDoc) + } +} + +waitForDb() + .then(main) + .then(() => { + process.exit(0) + }) + .catch(error => { + console.error(error) + process.exit(1) + })