20250320161029_update_inactive_project_index.mjs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /* eslint-disable no-unused-vars */
  2. import Helpers from './lib/helpers.mjs'
  3. const tags = ['server-ce', 'server-pro', 'saas']
  4. const oldIndex = {
  5. key: {
  6. lastOpened: 1,
  7. },
  8. name: 'lastOpened_1',
  9. }
  10. const newIndex = {
  11. key: {
  12. lastOpened: 1,
  13. },
  14. name: 'active_true_lastOpened_1',
  15. partialFilterExpression: { active: true },
  16. }
  17. const tmpIndex = {
  18. key: { lastOpened: 1, dummyField: 1 },
  19. name: 'lastOpened_tmp',
  20. }
  21. const migrate = async client => {
  22. const { db } = client
  23. // Create a temporary index so that projects are not left unindexed while we
  24. // drop the index and recreate it.
  25. await Helpers.addIndexesToCollection(db.projects, [tmpIndex])
  26. // Drop and recreate the index with different options
  27. await Helpers.dropIndexesFromCollection(db.projects, [oldIndex])
  28. await Helpers.addIndexesToCollection(db.projects, [newIndex])
  29. // Drop the temporary index
  30. await Helpers.dropIndexesFromCollection(db.projects, [tmpIndex])
  31. }
  32. const rollback = async client => {
  33. const { db } = client
  34. try {
  35. // Create a temporary index so that projects are not left unindexed while we
  36. // drop the index and recreate it.
  37. await Helpers.addIndexesToCollection(db.projects, [tmpIndex])
  38. // Drop and recreate the index with different options
  39. await Helpers.dropIndexesFromCollection(db.projects, [newIndex])
  40. await Helpers.addIndexesToCollection(db.projects, [oldIndex])
  41. // Drop the temporary index
  42. await Helpers.dropIndexesFromCollection(db.projects, [tmpIndex])
  43. } catch (err) {
  44. console.error('Something went wrong rolling back the migrations', err)
  45. }
  46. }
  47. export default {
  48. tags,
  49. migrate,
  50. rollback,
  51. }