From a71c8c24d9754041944727057524a5777e3cb2d1 Mon Sep 17 00:00:00 2001 From: Domagoj Kriskovic Date: Fri, 24 Jul 2026 12:55:26 +0200 Subject: [PATCH] Add migration for libraryReferences trashedAt indexes GitOrigin-RevId: 4a850c11560df3ae3053fbc66048b083e750b8d3 --- ...te_libraryReferences_trashedAt_indexes.mjs | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 tools/migrations/20260722120000_create_libraryReferences_trashedAt_indexes.mjs diff --git a/tools/migrations/20260722120000_create_libraryReferences_trashedAt_indexes.mjs b/tools/migrations/20260722120000_create_libraryReferences_trashedAt_indexes.mjs new file mode 100644 index 0000000000..7fa5f0d162 --- /dev/null +++ b/tools/migrations/20260722120000_create_libraryReferences_trashedAt_indexes.mjs @@ -0,0 +1,36 @@ +import Helpers from './lib/helpers.mjs' + +const tags = ['auxiliary'] + +// Two partial indexes (docs without trashedAt are not indexed) supporting the +// soft-delete (trash) feature +// - userId_1_trashedAt_1__id_1 serves the per-user trash listing/search, +// - trashedAt_1 serves the daily expiry cron's cross-user +const newIndexes = [ + { + key: { userId: 1, trashedAt: 1, _id: 1 }, + name: 'userId_1_trashedAt_1__id_1', + partialFilterExpression: { trashedAt: { $exists: true } }, + }, + { + key: { trashedAt: 1 }, + name: 'trashedAt_1', + partialFilterExpression: { trashedAt: { $exists: true } }, + }, +] + +const migrate = async client => { + const { db } = client + await Helpers.addIndexesToCollection(db.libraryReferences, newIndexes) +} + +const rollback = async client => { + const { db } = client + await Helpers.dropIndexesFromCollection(db.libraryReferences, newIndexes) +} + +export default { + tags, + migrate, + rollback, +}