| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- import Helpers from './lib/helpers.mjs'
- const tags = ['server-ce', 'server-pro', 'saas']
- const OLD_INDEX = {
- key: { refreshToken: 1 },
- name: 'refreshToken_1',
- unique: true,
- }
- const NEW_INDEX = {
- key: { refreshToken: 1 },
- name: 'refreshToken_1',
- unique: true,
- partialFilterExpression: { refreshToken: { $exists: true } },
- }
- const TMP_INDEX = {
- key: { refreshToken: 1, dummyField: 1 },
- name: 'refreshToken_tmp',
- }
- const migrate = async client => {
- const { db } = client
- // Create a temporary index so that the refresh tokens are not left unindexed
- // while we drop the index and recreate it.
- await Helpers.addIndexesToCollection(db.oauthAccessTokens, [TMP_INDEX])
- // Drop and recreate the index with different options
- await Helpers.dropIndexesFromCollection(db.oauthAccessTokens, [OLD_INDEX])
- await Helpers.addIndexesToCollection(db.oauthAccessTokens, [NEW_INDEX])
- // Drop the temporary index
- await Helpers.dropIndexesFromCollection(db.oauthAccessTokens, [TMP_INDEX])
- }
- const rollback = async client => {
- const { db } = client
- // Create a temporary index so that the refresh tokens are not left unindexed
- // while we drop the index and recreate it.
- await Helpers.addIndexesToCollection(db.oauthAccessTokens, [TMP_INDEX])
- // Drop and recreate the index with different options
- await Helpers.dropIndexesFromCollection(db.oauthAccessTokens, [NEW_INDEX])
- await Helpers.addIndexesToCollection(db.oauthAccessTokens, [OLD_INDEX])
- // Drop the temporary index
- await Helpers.dropIndexesFromCollection(db.oauthAccessTokens, [TMP_INDEX])
- }
- export default {
- tags,
- migrate,
- rollback,
- }
|