sync_v1_subscriptions.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. const { db } = require('../app/js/infrastructure/mongojs')
  2. const FeaturesUpdater = require('../app/js/Features/Subscription/FeaturesUpdater')
  3. const V1SubscriptionManager = require('../app/js/Features/Subscription/V1SubscriptionManager')
  4. const async = require('async')
  5. const logger = require('logger-sharelatex')
  6. logger.logger.level('error')
  7. const areFeaturesEqual = function(featuresA, featuresB) {
  8. for (const feature in featuresA) {
  9. if (featuresA[feature] !== featuresB[feature]) {
  10. return false
  11. }
  12. }
  13. return true
  14. }
  15. var outOfSyncUserCount = 0
  16. var userCount = null
  17. db.users.find(
  18. {
  19. 'overleaf.id': { $exists: true }
  20. },
  21. {
  22. overleaf: 1,
  23. features: 1
  24. },
  25. function(error, users) {
  26. if (error) throw error
  27. console.log('USER COUNT', (userCount = users.length))
  28. async.mapSeries(
  29. users,
  30. function(user, callback) {
  31. console.log('REFRESHING IN v2', user._id)
  32. FeaturesUpdater.refreshFeatures(user._id, false, function(error) {
  33. if (error) console.error('ERROR', error)
  34. console.log('REFRESHING IN v1', user._id)
  35. V1SubscriptionManager.notifyV1OfFeaturesChange(user._id, function(
  36. error
  37. ) {
  38. if (error) console.error('ERROR', error)
  39. db.users.find(
  40. {
  41. _id: user._id
  42. },
  43. {
  44. features: 1
  45. },
  46. function(error, [updatedUser]) {
  47. if (error) throw error
  48. if (areFeaturesEqual(user.features, updatedUser.features)) {
  49. console.log('UNCHANGED', user._id)
  50. } else {
  51. console.log('MODIFIED', user._id)
  52. outOfSyncUserCount = outOfSyncUserCount + 1
  53. }
  54. callback()
  55. }
  56. )
  57. })
  58. })
  59. },
  60. function(error) {
  61. if (error) throw error
  62. console.log('FINISHED!')
  63. console.log('OUT OF SYNC USERS', outOfSyncUserCount, '/', userCount)
  64. process.exit()
  65. }
  66. )
  67. }
  68. )