mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-29 16:53:42 -05:00
71 lines
2.1 KiB
JavaScript
71 lines
2.1 KiB
JavaScript
|
// Increase default mongo query timeout from 1min to 1h
|
||
|
process.env.MONGO_SOCKET_TIMEOUT = process.env.MONGO_SOCKET_TIMEOUT || '360000'
|
||
|
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() {
|
||
|
await gracefullyDropCollection(db.docHistory)
|
||
|
await gracefullyDropCollection(db.docHistoryIndex)
|
||
|
await gracefullyDropCollection(db.projectHistoryMetaData)
|
||
|
}
|
||
|
|
||
|
async function gracefullyDropCollection(collection) {
|
||
|
const collectionName = collection.collectionName
|
||
|
console.log(`removing \`${collectionName}\` data`)
|
||
|
try {
|
||
|
await collection.drop()
|
||
|
} catch (err) {
|
||
|
if (err.code === 26) {
|
||
|
// collection already deleted
|
||
|
console.log(`removing \`${collectionName}\` data - Already removed`)
|
||
|
} else {
|
||
|
throw err
|
||
|
}
|
||
|
}
|
||
|
console.log(`removing \`${collectionName}\` data - Done`)
|
||
|
}
|
||
|
|
||
|
waitForDb()
|
||
|
.then(main)
|
||
|
.catch(err => {
|
||
|
console.error(err)
|
||
|
process.exit(1)
|
||
|
})
|