2015-10-06 15:41:35 +00:00
|
|
|
{db, ObjectId} = require "./mongojs"
|
2017-03-17 09:31:12 +00:00
|
|
|
logger = require('logger-sharelatex')
|
|
|
|
metrics = require('metrics-sharelatex')
|
2015-10-06 15:41:35 +00:00
|
|
|
|
|
|
|
module.exports = ContactManager =
|
|
|
|
touchContact: (user_id, contact_id, callback = (error) ->) ->
|
|
|
|
try
|
|
|
|
user_id = ObjectId(user_id.toString())
|
|
|
|
catch error
|
|
|
|
return callback error
|
|
|
|
|
|
|
|
update = { $set: {}, $inc: {} }
|
|
|
|
update.$inc["contacts.#{contact_id}.n"] = 1
|
|
|
|
update.$set["contacts.#{contact_id}.ts"] = new Date()
|
|
|
|
|
|
|
|
db.contacts.update({
|
|
|
|
user_id: user_id
|
|
|
|
}, update, {
|
|
|
|
upsert: true
|
2015-10-06 16:22:11 +00:00
|
|
|
}, callback)
|
|
|
|
|
|
|
|
getContacts: (user_id, callback = (error) ->) ->
|
|
|
|
try
|
|
|
|
user_id = ObjectId(user_id.toString())
|
|
|
|
catch error
|
|
|
|
return callback error
|
|
|
|
|
|
|
|
db.contacts.findOne {
|
|
|
|
user_id: user_id
|
|
|
|
}, (error, user) ->
|
|
|
|
return callback(error) if error?
|
2017-03-17 09:31:12 +00:00
|
|
|
callback null, user?.contacts
|
|
|
|
|
2017-03-17 15:30:38 +00:00
|
|
|
[
|
|
|
|
'touchContact',
|
|
|
|
'getContacts',
|
|
|
|
].map (method) ->
|
|
|
|
metrics.timeAsyncMethod(ContactManager, method, 'mongo.ContactManager', logger)
|