diff --git a/models/profile.js b/models/profile.js index 58cd48e..192a036 100644 --- a/models/profile.js +++ b/models/profile.js @@ -67,6 +67,27 @@ module.exports = { }); }, + allMessages: (e, prodileId) => { + const promise = new Promise((resolve, reject) => { + ProfileModel.findById(prodileId, (err, result) => { + if (err) { + reject(err); + } + + if (result) { + resolve(result.messages || []); + } + }); + }); + + promise.then((result) => { + e.emit('allMessages', null, result); + }) + .catch((err) => { + e.emit('allMessages', err, null); + }); + }, + create: (e, profiles) => { var count = profiles.length; var errors = []; @@ -168,7 +189,7 @@ module.exports = { get: (e, id) => { const promise = new Promise((resolve, reject) => { - ProfileModel.find({ _id: id }, (err, result) => { + ProfileModel.findById(id, (err, result) => { if (err) { reject(err); } @@ -186,6 +207,27 @@ module.exports = { e.emit('get', err, null); }); }, + + getMessage: (e, prodileId, messageId) => { + const promise = new Promise((resolve, reject) => { + ProfileModel.findById(prodileId, (err, result) => { + if (err) { + reject(err); + } + + if (result) { + resolve(result.messages.id(messageId)); + } + }); + }); + + promise.then((result) => { + e.emit('getMessage', null, result); + }) + .catch((err) => { + e.emit('getMessage', err, null); + }); + }, update: (e, id, profile) => { const promise = new Promise((resolve, reject) => { diff --git a/routes/profiles.js b/routes/profiles.js index 7b1e9b7..35b2018 100644 --- a/routes/profiles.js +++ b/routes/profiles.js @@ -185,7 +185,22 @@ Router.route('/:profileId?/messages/:messageId?') }) .get((req, res) => { - + var ProfileEvents = new EventEmitter(); + var profileId = req.params.profileId || null; + var messageId = req.params.messageId || null; + var method = messageId ? 'getMessage' : 'allMessages'; + + ProfileEvents.once(method, (err, result) => { + if (err) { + res.status(500).json({ message: 'Could not get message' + (messageId ? ' ' : 's ') + 'for profile' + (profileId ? '' : 's') + ' [' + err + ']', err: err }); + } + + if (result) { + res.status(200).json(result); + } + }); + + Profiles[method](ProfileEvents, profileId, messageId); }) .patch( updateMessage ) .put( updateMessage );