|
@@ -0,0 +1,36 @@
|
|
|
|
|
+import { db } from './lib/mongodb.mjs'
|
|
|
|
|
+import { batchedUpdate } from '@overleaf/mongo-utils/batchedUpdate.js'
|
|
|
|
|
+
|
|
|
|
|
+// Cleanup following the removal of the reference manager settings migration
|
|
|
|
|
+// code (see #34507). The `migrated` flag was written alongside the
|
|
|
|
|
+// zotero/mendeley/papers settings during the local-storage -> mongo migration
|
|
|
|
|
+// and is no longer read or written, so we $unset it from existing user
|
|
|
|
|
+// documents.
|
|
|
|
|
+
|
|
|
|
|
+// Non-blocking: the field is already unused in code, so this cleanup does not
|
|
|
|
|
+// need to be applied before the deploy that ships it.
|
|
|
|
|
+const tags = ['saas', 'server-ce', 'server-pro', 'nonblocking']
|
|
|
|
|
+
|
|
|
|
|
+const MIGRATED_FIELDS = [
|
|
|
|
|
+ 'ace.zotero.migrated',
|
|
|
|
|
+ 'ace.mendeley.migrated',
|
|
|
|
|
+ 'ace.papers.migrated',
|
|
|
|
|
+]
|
|
|
|
|
+
|
|
|
|
|
+const migrate = async () => {
|
|
|
|
|
+ await batchedUpdate(
|
|
|
|
|
+ db.users,
|
|
|
|
|
+ { $or: MIGRATED_FIELDS.map(field => ({ [field]: { $exists: true } })) },
|
|
|
|
|
+ { $unset: Object.fromEntries(MIGRATED_FIELDS.map(field => [field, ''])) }
|
|
|
|
|
+ )
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+// No rollback: the original per-user value of `migrated` is not recoverable and
|
|
|
|
|
+// the field is no longer used anywhere.
|
|
|
|
|
+const rollback = async () => {}
|
|
|
|
|
+
|
|
|
|
|
+export default {
|
|
|
|
|
+ tags,
|
|
|
|
|
+ migrate,
|
|
|
|
|
+ rollback,
|
|
|
|
|
+}
|