overleaf/services/contacts/app/coffee/ContactManager.coffee
2017-03-17 09:31:12 +00:00

44 lines
1,004 B
CoffeeScript

{db, ObjectId} = require "./mongojs"
logger = require('logger-sharelatex')
metrics = require('metrics-sharelatex')
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
}, 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?
callback null, user?.contacts
metrics.timeAsyncMethod(
ContactManager, 'touchContact',
'ContactManager.touchContact',
logger
)
metrics.timeAsyncMethod(
ContactManager, 'getContacts',
'ContactManager.getContacts',
logger
)