SplitTestUserGetter.mjs 726 B

123456789101112131415161718192021222324252627282930
  1. const { callbackify } = require('util')
  2. const Metrics = require('@overleaf/metrics')
  3. const UserGetter = require('../User/UserGetter')
  4. async function getUser(id, splitTestName) {
  5. const projection = {
  6. analyticsId: 1,
  7. alphaProgram: 1,
  8. betaProgram: 1,
  9. }
  10. if (splitTestName) {
  11. projection[`splitTests.${splitTestName}`] = 1
  12. } else {
  13. projection.splitTests = 1
  14. }
  15. const user = await UserGetter.promises.getUser(id, projection)
  16. Metrics.histogram(
  17. 'split_test_get_user_from_mongo_size',
  18. JSON.stringify(user).length,
  19. [0, 100, 500, 1000, 2000, 5000, 10000, 15000, 20000, 50000, 100000]
  20. )
  21. return user
  22. }
  23. module.exports = {
  24. getUser: callbackify(getUser),
  25. promises: {
  26. getUser,
  27. },
  28. }