|
@@ -0,0 +1,60 @@
|
|
|
|
|
+const { waitForDb, db } = require('../../app/src/infrastructure/mongodb')
|
|
|
|
|
+
|
|
|
|
|
+async function main() {
|
|
|
|
|
+ await checkAllProjectsAreMigrated()
|
|
|
|
|
+ await setAllowDowngradeToFalse()
|
|
|
|
|
+ await deleteHistoryCollections()
|
|
|
|
|
+ console.log('Legacy history data cleaned up successfully')
|
|
|
|
|
+ process.exit(0)
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+async function checkAllProjectsAreMigrated() {
|
|
|
|
|
+ console.log('checking all projects are migrated to Full Project History')
|
|
|
|
|
+
|
|
|
|
|
+ const count = await db.projects.countDocuments({
|
|
|
|
|
+ 'overleaf.history.display': { $ne: true },
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
+ if (count === 0) {
|
|
|
|
|
+ console.log('All projects are migrated to Full Project History')
|
|
|
|
|
+ } else {
|
|
|
|
|
+ console.error(
|
|
|
|
|
+ `There are ${count} projects that are not migrated to Full Project History` +
|
|
|
|
|
+ ` please complete the migration before running this script again.`
|
|
|
|
|
+ )
|
|
|
|
|
+ process.exit(1)
|
|
|
|
|
+ }
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+async function setAllowDowngradeToFalse() {
|
|
|
|
|
+ console.log('unsetting `allowDowngrade` flag in all projects')
|
|
|
|
|
+ await db.projects.updateMany(
|
|
|
|
|
+ {
|
|
|
|
|
+ 'overleaf.history.id': { $exists: true },
|
|
|
|
|
+ 'overleaf.history.allowDowngrade': true,
|
|
|
|
|
+ },
|
|
|
|
|
+ { $unset: { 'overleaf.history.allowDowngrade': 1 } }
|
|
|
|
|
+ )
|
|
|
|
|
+ console.log('unsetting `allowDowngrade` flag in all projects - Done')
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+async function deleteHistoryCollections() {
|
|
|
|
|
+ console.log('removing `docHistory` data')
|
|
|
|
|
+ await db.docHistory.deleteMany({})
|
|
|
|
|
+ console.log('removing `docHistory` data - Done')
|
|
|
|
|
+
|
|
|
|
|
+ console.log('removing `docHistoryIndex` data')
|
|
|
|
|
+ await db.docHistoryIndex.deleteMany({})
|
|
|
|
|
+ console.log('removing `docHistoryIndex` data - Done')
|
|
|
|
|
+
|
|
|
|
|
+ console.log('removing `projectHistoryMetaData` data')
|
|
|
|
|
+ await db.projectHistoryMetaData.deleteMany({})
|
|
|
|
|
+ console.log('removing `projectHistoryMetaData` data - Done')
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+waitForDb()
|
|
|
|
|
+ .then(main)
|
|
|
|
|
+ .catch(err => {
|
|
|
|
|
+ console.error(err)
|
|
|
|
|
+ process.exit(1)
|
|
|
|
|
+ })
|