20190912145024_create_projects_indexes.mjs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. /* eslint-disable no-unused-vars */
  2. import Helpers from './lib/helpers.mjs'
  3. const tags = ['server-ce', 'server-pro', 'saas']
  4. const indexes = [
  5. {
  6. key: {
  7. active: 1,
  8. lastOpened: 1,
  9. },
  10. name: 'active_1_lastOpened_1',
  11. },
  12. {
  13. unique: true,
  14. key: {
  15. 'tokens.readOnly': 1,
  16. },
  17. name: 'tokens.readOnly_1',
  18. partialFilterExpression: {
  19. 'tokens.readOnly': {
  20. $exists: true,
  21. },
  22. },
  23. },
  24. {
  25. unique: true,
  26. key: {
  27. 'overleaf.history.id': 1,
  28. },
  29. name: 'overleaf.history.id_1',
  30. partialFilterExpression: {
  31. 'overleaf.history.id': {
  32. $exists: true,
  33. },
  34. },
  35. },
  36. {
  37. unique: true,
  38. key: {
  39. 'tokens.readAndWritePrefix': 1,
  40. },
  41. name: 'tokens.readAndWritePrefix_1',
  42. partialFilterExpression: {
  43. 'tokens.readAndWritePrefix': {
  44. $exists: true,
  45. },
  46. },
  47. },
  48. {
  49. key: {
  50. publicAccesLevel: 1,
  51. },
  52. name: 'publicAccesLevel_1',
  53. },
  54. {
  55. key: {
  56. owner_ref: 1,
  57. },
  58. name: 'owner_ref_1',
  59. },
  60. {
  61. key: {
  62. tokenAccessReadAndWrite_refs: 1,
  63. },
  64. name: 'tokenAccessReadAndWrite_refs_1',
  65. },
  66. {
  67. key: {
  68. readOnly_refs: 1,
  69. },
  70. name: 'readOnly_refs_1',
  71. },
  72. {
  73. key: {
  74. tokenAccessReadOnly_refs: 1,
  75. },
  76. name: 'tokenAccessReadOnly_refs_1',
  77. },
  78. {
  79. unique: true,
  80. key: {
  81. 'overleaf.id': 1,
  82. },
  83. name: 'overleaf.id_1',
  84. partialFilterExpression: {
  85. 'overleaf.id': {
  86. $exists: true,
  87. },
  88. },
  89. },
  90. {
  91. key: {
  92. collaberator_refs: 1,
  93. },
  94. name: 'collaberator_refs_1',
  95. },
  96. {
  97. key: {
  98. name: 1,
  99. },
  100. name: 'name_1',
  101. },
  102. {
  103. unique: true,
  104. key: {
  105. 'tokens.readAndWrite': 1,
  106. },
  107. name: 'tokens.readAndWrite_1',
  108. partialFilterExpression: {
  109. 'tokens.readAndWrite': {
  110. $exists: true,
  111. },
  112. },
  113. },
  114. {
  115. key: {
  116. 'collabratecUsers.user_id': 1,
  117. },
  118. name: 'collabratecUsers.user_id_1',
  119. sparse: true,
  120. },
  121. ]
  122. const migrate = async client => {
  123. const { db } = client
  124. await Helpers.addIndexesToCollection(db.projects, indexes)
  125. }
  126. const rollback = async client => {
  127. const { db } = client
  128. try {
  129. await Helpers.dropIndexesFromCollection(db.projects, indexes)
  130. } catch (err) {
  131. console.error('Something went wrong rolling back the migrations', err)
  132. }
  133. }
  134. export default {
  135. tags,
  136. migrate,
  137. rollback,
  138. }