2020-02-17 07:37:55 +00:00
|
|
|
/* eslint-disable
|
|
|
|
camelcase,
|
|
|
|
handle-callback-err,
|
|
|
|
*/
|
|
|
|
// TODO: This file was created by bulk-decaffeinate.
|
|
|
|
// Fix any style issues and re-enable lint.
|
2020-02-17 07:37:54 +00:00
|
|
|
/*
|
|
|
|
* decaffeinate suggestions:
|
|
|
|
* DS102: Remove unnecessary code created because of implicit returns
|
|
|
|
* DS207: Consider shorter variations of null checks
|
|
|
|
* Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
|
|
|
|
*/
|
2020-02-17 07:38:00 +00:00
|
|
|
let ContactManager
|
2020-08-21 15:30:18 +00:00
|
|
|
const { db, ObjectId } = require('./mongodb')
|
2020-02-17 07:38:00 +00:00
|
|
|
const logger = require('logger-sharelatex')
|
|
|
|
const metrics = require('metrics-sharelatex')
|
2015-10-06 15:41:35 +00:00
|
|
|
|
2020-02-17 07:38:00 +00:00
|
|
|
module.exports = ContactManager = {
|
|
|
|
touchContact(user_id, contact_id, callback) {
|
|
|
|
if (callback == null) {
|
2020-06-04 07:49:46 +00:00
|
|
|
callback = function (error) {}
|
2020-02-17 07:38:00 +00:00
|
|
|
}
|
|
|
|
try {
|
|
|
|
user_id = ObjectId(user_id.toString())
|
|
|
|
} catch (error1) {
|
|
|
|
const error = error1
|
|
|
|
return callback(error)
|
|
|
|
}
|
2015-10-06 15:41:35 +00:00
|
|
|
|
2020-02-17 07:38:00 +00:00
|
|
|
const update = { $set: {}, $inc: {} }
|
|
|
|
update.$inc[`contacts.${contact_id}.n`] = 1
|
|
|
|
update.$set[`contacts.${contact_id}.ts`] = new Date()
|
2015-10-06 15:41:35 +00:00
|
|
|
|
2020-08-21 15:30:18 +00:00
|
|
|
db.contacts.updateOne(
|
2020-02-17 07:38:00 +00:00
|
|
|
{
|
|
|
|
user_id
|
|
|
|
},
|
|
|
|
update,
|
|
|
|
{
|
|
|
|
upsert: true
|
|
|
|
},
|
|
|
|
callback
|
|
|
|
)
|
|
|
|
},
|
2017-03-17 09:31:12 +00:00
|
|
|
|
2020-02-17 07:38:00 +00:00
|
|
|
getContacts(user_id, callback) {
|
|
|
|
if (callback == null) {
|
2020-06-04 07:49:46 +00:00
|
|
|
callback = function (error) {}
|
2020-02-17 07:38:00 +00:00
|
|
|
}
|
|
|
|
try {
|
|
|
|
user_id = ObjectId(user_id.toString())
|
|
|
|
} catch (error1) {
|
|
|
|
const error = error1
|
|
|
|
return callback(error)
|
|
|
|
}
|
|
|
|
|
|
|
|
return db.contacts.findOne(
|
|
|
|
{
|
|
|
|
user_id
|
|
|
|
},
|
2020-06-04 07:49:46 +00:00
|
|
|
function (error, user) {
|
2020-02-17 07:38:00 +00:00
|
|
|
if (error != null) {
|
|
|
|
return callback(error)
|
|
|
|
}
|
|
|
|
return callback(null, user != null ? user.contacts : undefined)
|
|
|
|
}
|
|
|
|
)
|
|
|
|
}
|
|
|
|
}
|
2020-06-04 07:49:46 +00:00
|
|
|
;['touchContact', 'getContacts'].map((method) =>
|
2020-02-17 07:38:00 +00:00
|
|
|
metrics.timeAsyncMethod(
|
|
|
|
ContactManager,
|
|
|
|
method,
|
|
|
|
'mongo.ContactManager',
|
|
|
|
logger
|
|
|
|
)
|
|
|
|
)
|