Add support for finding messages by date for msg pointers
This commit is contained in:
parent
fa1bffeaf8
commit
c5e3220c1d
|
@ -8,11 +8,13 @@ const Message = require('./message.js');
|
||||||
const Log = require('./logger.js').log;
|
const Log = require('./logger.js').log;
|
||||||
const msgNetRecord = require('./msg_network.js').recordMessage;
|
const msgNetRecord = require('./msg_network.js').recordMessage;
|
||||||
const sortAreasOrConfs = require('./conf_area_util.js').sortAreasOrConfs;
|
const sortAreasOrConfs = require('./conf_area_util.js').sortAreasOrConfs;
|
||||||
|
const { getISOTimestampString } = require('./database.js');
|
||||||
|
|
||||||
// deps
|
// deps
|
||||||
const async = require('async');
|
const async = require('async');
|
||||||
const _ = require('lodash');
|
const _ = require('lodash');
|
||||||
const assert = require('assert');
|
const assert = require('assert');
|
||||||
|
const moment = require('moment');
|
||||||
|
|
||||||
exports.getAvailableMessageConferences = getAvailableMessageConferences;
|
exports.getAvailableMessageConferences = getAvailableMessageConferences;
|
||||||
exports.getSortedAvailMessageConferences = getSortedAvailMessageConferences;
|
exports.getSortedAvailMessageConferences = getSortedAvailMessageConferences;
|
||||||
|
@ -28,6 +30,7 @@ exports.tempChangeMessageConfAndArea = tempChangeMessageConfAndArea;
|
||||||
exports.getMessageListForArea = getMessageListForArea;
|
exports.getMessageListForArea = getMessageListForArea;
|
||||||
exports.getNewMessageCountInAreaForUser = getNewMessageCountInAreaForUser;
|
exports.getNewMessageCountInAreaForUser = getNewMessageCountInAreaForUser;
|
||||||
exports.getNewMessagesInAreaForUser = getNewMessagesInAreaForUser;
|
exports.getNewMessagesInAreaForUser = getNewMessagesInAreaForUser;
|
||||||
|
exports.getMessageIdNewerThanTimestampByArea = getMessageIdNewerThanTimestampByArea;
|
||||||
exports.getMessageAreaLastReadId = getMessageAreaLastReadId;
|
exports.getMessageAreaLastReadId = getMessageAreaLastReadId;
|
||||||
exports.updateMessageAreaLastReadId = updateMessageAreaLastReadId;
|
exports.updateMessageAreaLastReadId = updateMessageAreaLastReadId;
|
||||||
exports.persistMessage = persistMessage;
|
exports.persistMessage = persistMessage;
|
||||||
|
@ -482,6 +485,28 @@ function getMessageListForArea(options, areaTag, cb) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getMessageIdNewerThanTimestampByArea(areaTag, newerThanTimestamp, cb) {
|
||||||
|
if(moment.isMoment(newerThanTimestamp)) {
|
||||||
|
newerThanTimestamp = getISOTimestampString(newerThanTimestamp);
|
||||||
|
}
|
||||||
|
|
||||||
|
msgDb.get(
|
||||||
|
`SELECT message_id
|
||||||
|
FROM message
|
||||||
|
WHERE area_tag = ? AND DATETIME(modified_timestamp) > DATETIME("${newerThanTimestamp}", "+1 seconds")
|
||||||
|
ORDER BY modified_timestamp ASC
|
||||||
|
LIMIT 1;`,
|
||||||
|
[ areaTag ],
|
||||||
|
(err, row) => {
|
||||||
|
if(err) {
|
||||||
|
return cb(err);
|
||||||
|
}
|
||||||
|
|
||||||
|
return cb(null, row ? row.message_id : null);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
function getMessageAreaLastReadId(userId, areaTag, cb) {
|
function getMessageAreaLastReadId(userId, areaTag, cb) {
|
||||||
msgDb.get(
|
msgDb.get(
|
||||||
'SELECT message_id ' +
|
'SELECT message_id ' +
|
||||||
|
@ -494,7 +519,12 @@ function getMessageAreaLastReadId(userId, areaTag, cb) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateMessageAreaLastReadId(userId, areaTag, messageId, cb) {
|
function updateMessageAreaLastReadId(userId, areaTag, messageId, allowOlder, cb) {
|
||||||
|
if(!cb && _.isFunction(allowOlder)) {
|
||||||
|
cb = allowOlder;
|
||||||
|
allowOlder = false;
|
||||||
|
}
|
||||||
|
|
||||||
// :TODO: likely a better way to do this...
|
// :TODO: likely a better way to do this...
|
||||||
async.waterfall(
|
async.waterfall(
|
||||||
[
|
[
|
||||||
|
@ -505,7 +535,7 @@ function updateMessageAreaLastReadId(userId, areaTag, messageId, cb) {
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
function update(lastId, callback) {
|
function update(lastId, callback) {
|
||||||
if(messageId > lastId) {
|
if(allowOlder || messageId > lastId) {
|
||||||
msgDb.run(
|
msgDb.run(
|
||||||
'REPLACE INTO user_message_area_last_read (user_id, area_tag, message_id) ' +
|
'REPLACE INTO user_message_area_last_read (user_id, area_tag, message_id) ' +
|
||||||
'VALUES (?, ?, ?);',
|
'VALUES (?, ?, ?);',
|
||||||
|
|
Loading…
Reference in New Issue