Files
overleaf/tools/migrations/20251110151140_create_notificationsPreferences_collection.mjs
Jimmy Domagala-Tang ff987aa433 Migration for "notificationsPreferences" collection (#29446)
* Implement notifications preferences model

* NotificationPreferences class

* remove index performance tests

* move to unit tests

* use zod

* saving multiple preference values

* set unique:true

* throw error if preferences can't be parsed

* use z.infer

* strict schema when saving preferences

* fix: update notifPreferenceKey type to only contain key values

---------

Co-authored-by: Domagoj Kriskovic <dom.kriskovic@overleaf.com>
GitOrigin-RevId: 20cf3799c91e6a890ab6217667594d181237c791
2025-11-19 09:06:01 +00:00

37 lines
868 B
JavaScript

import Helpers from './lib/helpers.mjs'
import { getCollectionInternal } from './lib/mongodb.mjs'
const tags = ['server-ce', 'server-pro', 'saas']
const indexes = [
{
// compound index for querying both global (project_id: null) and project-specific notification preferences
key: {
user_id: 1,
project_id: 1,
},
unique: true,
name: 'user_id_1_project_id_1',
},
]
const migrate = async () => {
const notificationsPreferences = await getCollectionInternal(
'notificationsPreferences'
)
await Helpers.addIndexesToCollection(notificationsPreferences, indexes)
}
const rollback = async () => {
const notificationsPreferences = await getCollectionInternal(
'notificationsPreferences'
)
await Helpers.dropIndexesFromCollection(notificationsPreferences, indexes)
}
export default {
tags,
migrate,
rollback,
}