20230110140452_rename_recurly_cached_status.mjs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import { batchedUpdate } from '@overleaf/mongo-utils/batchedUpdate.js'
  2. const tags = ['saas']
  3. const migrate = async client => {
  4. const { db } = client
  5. // 'recurly' -> 'recurlyStatus'
  6. await batchedUpdate(
  7. db.subscriptions,
  8. {
  9. $and: [
  10. { recurlyStatus: { $exists: false } },
  11. { recurly: { $exists: true } },
  12. ],
  13. },
  14. { $rename: { recurly: 'recurlyStatus' } }
  15. )
  16. // some records may have already recached the recurly status, discard old cache
  17. await batchedUpdate(
  18. db.subscriptions,
  19. {
  20. $and: [
  21. { recurlyStatus: { $exists: true } },
  22. { recurly: { $exists: true } },
  23. ],
  24. },
  25. { $unset: { recurly: 1 } }
  26. )
  27. }
  28. const rollback = async client => {
  29. const { db } = client
  30. // 'recurlyStatus' -> 'recurly'
  31. await batchedUpdate(
  32. db.subscriptions,
  33. {
  34. $and: [
  35. { recurly: { $exists: false } },
  36. { recurlyStatus: { $exists: true } },
  37. ],
  38. },
  39. { $rename: { recurlyStatus: 'recurly' } }
  40. )
  41. // some records may have already recached the recurly status, discard old cache
  42. await batchedUpdate(
  43. db.subscriptions,
  44. {
  45. $and: [
  46. { recurlyStatus: { $exists: true } },
  47. { recurly: { $exists: true } },
  48. ],
  49. },
  50. { $unset: { recurlyStatus: 1 } }
  51. )
  52. }
  53. export default {
  54. tags,
  55. migrate,
  56. rollback,
  57. }