20190912145028_create_subscriptions_indexes.mjs 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. /* eslint-disable no-unused-vars */
  2. import Helpers from './lib/helpers.mjs'
  3. const tags = ['saas']
  4. const indexes = [
  5. {
  6. key: {
  7. 'teamInvites.token': 1,
  8. },
  9. name: 'teamInvites.token_1',
  10. partialFilterExpression: {
  11. 'teamInvites.token': {
  12. $exists: true,
  13. },
  14. },
  15. },
  16. {
  17. unique: true,
  18. key: {
  19. manager_ids: 1,
  20. },
  21. name: 'manager_ids_1',
  22. partialFilterExpression: {
  23. manager_ids: {
  24. $exists: true,
  25. },
  26. },
  27. },
  28. {
  29. unique: true,
  30. key: {
  31. admin_id: 1,
  32. },
  33. name: 'admin_id_1',
  34. },
  35. {
  36. key: {
  37. 'freeTrial.downgraded': 1,
  38. 'freeTrial.expiresAt': 1,
  39. },
  40. name: 'free_trial',
  41. },
  42. {
  43. key: {
  44. member_ids: 1,
  45. },
  46. name: 'member_ids_1',
  47. },
  48. {
  49. key: {
  50. invited_emails: 1,
  51. },
  52. name: 'invited_emails_1',
  53. },
  54. {
  55. unique: true,
  56. key: {
  57. 'overleaf.id': 1,
  58. },
  59. name: 'overleaf.id_1',
  60. partialFilterExpression: {
  61. 'overleaf.id': {
  62. $exists: true,
  63. },
  64. },
  65. },
  66. ]
  67. const migrate = async client => {
  68. const { db } = client
  69. await Helpers.addIndexesToCollection(db.subscriptions, indexes)
  70. }
  71. const rollback = async client => {
  72. const { db } = client
  73. try {
  74. await Helpers.dropIndexesFromCollection(db.subscriptions, indexes)
  75. } catch (err) {
  76. console.error('Something went wrong rolling back the migrations', err)
  77. }
  78. }
  79. export default {
  80. tags,
  81. migrate,
  82. rollback,
  83. }