diff --git a/services/web/app/src/Features/Project/ProjectDeleter.js b/services/web/app/src/Features/Project/ProjectDeleter.js index 5e8df133bd..13185b21c5 100644 --- a/services/web/app/src/Features/Project/ProjectDeleter.js +++ b/services/web/app/src/Features/Project/ProjectDeleter.js @@ -90,7 +90,7 @@ async function expireDeletedProjectsAfterDuration() { 'deleterData.deletedAt': { $lt: new Date(moment().subtract(EXPIRE_PROJECTS_AFTER_DAYS, 'days')), }, - project: { $ne: null }, + project: { $type: 'object' }, }, { 'deleterData.deletedProjectId': 1 } ) diff --git a/services/web/migrations/20250126195914_update_deleterData.deletedAt_index.mjs b/services/web/migrations/20250126195914_update_deleterData.deletedAt_index.mjs new file mode 100644 index 0000000000..b2264a02c3 --- /dev/null +++ b/services/web/migrations/20250126195914_update_deleterData.deletedAt_index.mjs @@ -0,0 +1,44 @@ +/* eslint-disable no-unused-vars */ + +import Helpers from './lib/helpers.mjs' + +const tags = ['server-ce', 'server-pro', 'saas'] + +const oldIndex = { + key: { + 'deleterData.deletedAt': 1, + }, + name: 'deleterData.deletedAt_1', +} + +const newIndex = { + key: { + 'deleterData.deletedAt': 1, + }, + name: 'deleterData.deletedAt_1', + partialFilterExpression: { project: { $type: 'object' } }, +} + +const migrate = async client => { + const { db } = client + + await Helpers.dropIndexesFromCollection(db.deletedProjects, [oldIndex]) + await Helpers.addIndexesToCollection(db.deletedProjects, [newIndex]) +} + +const rollback = async client => { + const { db } = client + + try { + await Helpers.dropIndexesFromCollection(db.deletedProjects, [newIndex]) + await Helpers.addIndexesToCollection(db.deletedProjects, [oldIndex]) + } catch (err) { + console.error('Something went wrong rolling back the migrations', err) + } +} + +export default { + tags, + migrate, + rollback, +} diff --git a/services/web/test/unit/src/Project/ProjectDeleterTests.js b/services/web/test/unit/src/Project/ProjectDeleterTests.js index 6946aa348b..6b76aaa060 100644 --- a/services/web/test/unit/src/Project/ProjectDeleterTests.js +++ b/services/web/test/unit/src/Project/ProjectDeleterTests.js @@ -397,7 +397,7 @@ describe('ProjectDeleter', function () { $lt: new Date(moment().subtract(90, 'days')), }, project: { - $ne: null, + $type: 'object', }, }) .chain('exec')