Fixes to last read ID updates and DRY

This commit is contained in:
Bryan Ashby 2016-01-03 17:47:39 -07:00
parent 9306b6e38c
commit 63019e9338
1 changed files with 39 additions and 24 deletions

View File

@ -4,6 +4,7 @@
var msgDb = require('./database.js').dbs.message; var msgDb = require('./database.js').dbs.message;
var Config = require('./config.js').config; var Config = require('./config.js').config;
var Message = require('./message.js'); var Message = require('./message.js');
var Log = require('./logger.js').log;
var async = require('async'); var async = require('async');
var _ = require('lodash'); var _ = require('lodash');
@ -105,6 +106,19 @@ function changeMessageArea(client, areaName, cb) {
); );
} }
function getMessageFromRow(row) {
return {
messageId : row.message_id,
messageUuid : row.message_uuid,
replyToMsgId : row.reply_to_message_id,
toUserName : row.to_user_name,
fromUserName : row.from_user_name,
subject : row.subject,
modTimestamp : row.modified_timestamp,
viewCount : row.view_count,
};
}
function getNewMessagesInAreaForUser(userId, areaName, cb) { function getNewMessagesInAreaForUser(userId, areaName, cb) {
// //
// If |areaName| is Message.WellKnownAreaNames.Private, // If |areaName| is Message.WellKnownAreaNames.Private,
@ -136,18 +150,11 @@ function getNewMessagesInAreaForUser(userId, areaName, cb) {
sql += ' ORDER BY message_id;'; sql += ' ORDER BY message_id;';
console.log(sql)
msgDb.each(sql, function msgRow(err, row) { msgDb.each(sql, function msgRow(err, row) {
if(!err) { if(!err) {
msgList.push( { msgList.push(getMessageFromRow(row));
messageId : row.message_id,
messageUuid : row.message_uuid,
replyToMsgId : row.reply_to_message_id,
toUserName : row.to_user_name,
fromUserName : row.from_user_name,
subject : row.subject,
modTimestamp : row.modified_timestamp,
viewCount : row.view_count,
} );
} }
}, callback); }, callback);
} }
@ -191,16 +198,7 @@ function getMessageListForArea(options, areaName, cb) {
[ areaName.toLowerCase() ], [ areaName.toLowerCase() ],
function msgRow(err, row) { function msgRow(err, row) {
if(!err) { if(!err) {
msgList.push( { msgList.push(getMessageFromRow(row));
messageId : row.message_id,
messageUuid : row.message_uuid,
replyToMsgId : row.reply_to_message_id,
toUserName : row.to_user_name,
fromUserName : row.from_user_name,
subject : row.subject,
modTimestamp : row.modified_timestamp,
viewCount : row.view_count,
} );
} }
}, },
callback callback
@ -222,11 +220,13 @@ function getMessageAreaLastReadId(userId, areaName, cb) {
'FROM user_message_area_last_read ' + 'FROM user_message_area_last_read ' +
'WHERE user_id = ? AND area_name = ?;', 'WHERE user_id = ? AND area_name = ?;',
[ userId, areaName ], [ userId, areaName ],
cb // (err, lastId) function complete(err, row) {
cb(err, row ? row.message_id : 0);
}
); );
} }
function updateMessageAreaLastReadId(userId, areaName, messageId) { function updateMessageAreaLastReadId(userId, areaName, messageId, cb) {
// :TODO: likely a better way to do this... // :TODO: likely a better way to do this...
async.waterfall( async.waterfall(
[ [
@ -241,10 +241,25 @@ function updateMessageAreaLastReadId(userId, areaName, messageId) {
msgDb.run( msgDb.run(
'REPLACE INTO user_message_area_last_read (user_id, area_name, message_id) ' + 'REPLACE INTO user_message_area_last_read (user_id, area_name, message_id) ' +
'VALUES (?, ?, ?);', 'VALUES (?, ?, ?);',
[ userId, areaName, messageId ] [ userId, areaName, messageId ],
); callback
} );
} } else {
] callback(null);
}
}
],
function complete(err) {
if(err) {
Log.debug(
{ error : err.toString(), userId : userId, areaName : areaName, messageId : messageId },
'Failed updating area last read ID');
} else {
Log.trace(
{ userId : userId, areaName : areaName, messageId : messageId },
'Area last read ID updated');
}
cb(err);
}
); );
} }