ContactManager.js 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. /* eslint-disable
  2. camelcase,
  3. handle-callback-err,
  4. */
  5. // TODO: This file was created by bulk-decaffeinate.
  6. // Fix any style issues and re-enable lint.
  7. /*
  8. * decaffeinate suggestions:
  9. * DS102: Remove unnecessary code created because of implicit returns
  10. * DS207: Consider shorter variations of null checks
  11. * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
  12. */
  13. let ContactManager
  14. const { db, ObjectId } = require('./mongodb')
  15. const logger = require('logger-sharelatex')
  16. const metrics = require('metrics-sharelatex')
  17. module.exports = ContactManager = {
  18. touchContact(user_id, contact_id, callback) {
  19. if (callback == null) {
  20. callback = function (error) {}
  21. }
  22. try {
  23. user_id = ObjectId(user_id.toString())
  24. } catch (error1) {
  25. const error = error1
  26. return callback(error)
  27. }
  28. const update = { $set: {}, $inc: {} }
  29. update.$inc[`contacts.${contact_id}.n`] = 1
  30. update.$set[`contacts.${contact_id}.ts`] = new Date()
  31. db.contacts.updateOne(
  32. {
  33. user_id
  34. },
  35. update,
  36. {
  37. upsert: true
  38. },
  39. callback
  40. )
  41. },
  42. getContacts(user_id, callback) {
  43. if (callback == null) {
  44. callback = function (error) {}
  45. }
  46. try {
  47. user_id = ObjectId(user_id.toString())
  48. } catch (error1) {
  49. const error = error1
  50. return callback(error)
  51. }
  52. return db.contacts.findOne(
  53. {
  54. user_id
  55. },
  56. function (error, user) {
  57. if (error != null) {
  58. return callback(error)
  59. }
  60. return callback(null, user != null ? user.contacts : undefined)
  61. }
  62. )
  63. }
  64. }
  65. ;['touchContact', 'getContacts'].map((method) =>
  66. metrics.timeAsyncMethod(
  67. ContactManager,
  68. method,
  69. 'mongo.ContactManager',
  70. logger
  71. )
  72. )