UserAnalyticsIdCache.mjs 768 B

12345678910111213141516171819202122232425262728293031
  1. const UserGetter = require('../User/UserGetter')
  2. const { CacheLoader } = require('cache-flow')
  3. const { callbackify } = require('util')
  4. class UserAnalyticsIdCache extends CacheLoader {
  5. constructor() {
  6. super('user-analytics-id', {
  7. expirationTime: 60,
  8. maxSize: 10000,
  9. })
  10. }
  11. async load(userId) {
  12. const user = await UserGetter.promises.getUser(userId, { analyticsId: 1 })
  13. if (user) {
  14. return user.analyticsId || user._id.toString()
  15. }
  16. }
  17. keyToString(userId) {
  18. if (userId) {
  19. return userId.toString()
  20. }
  21. }
  22. }
  23. const userAnalyticsIdCache = new UserAnalyticsIdCache()
  24. userAnalyticsIdCache.callbacks = {
  25. get: callbackify(userAnalyticsIdCache.get).bind(userAnalyticsIdCache),
  26. }
  27. module.exports = userAnalyticsIdCache