mod_storage_*: Also include timestmap of first message in :summary API
For completeness along with most recent timestamp. Might be nice to be
able to order by oldest unread message.
--- a/plugins/mod_storage_internal.lua Fri Aug 23 01:10:27 2019 +0200
+++ b/plugins/mod_storage_internal.lua Fri Aug 23 01:15:44 2019 +0200
@@ -218,13 +218,18 @@
local iter, err = self:find(username, query)
if not iter then return iter, err; end
local counts = {};
+ local earliest = {};
local latest = {};
for _, _, when, with in iter do
counts[with] = (counts[with] or 0) + 1;
+ if earliest[with] == nil then
+ earliest[with] = when;
+ end
latest[with] = when;
end
return {
counts = counts;
+ earliest = earliest;
latest = latest;
};
end
--- a/plugins/mod_storage_memory.lua Fri Aug 23 01:10:27 2019 +0200
+++ b/plugins/mod_storage_memory.lua Fri Aug 23 01:15:44 2019 +0200
@@ -171,13 +171,18 @@
local iter, err = self:find(username, query)
if not iter then return iter, err; end
local counts = {};
+ local earliest = {};
local latest = {};
for _, _, when, with in iter do
counts[with] = (counts[with] or 0) + 1;
+ if earliest[with] == nil then
+ earliest[with] = when;
+ end
latest[with] = when;
end
return {
counts = counts;
+ earliest = earliest;
latest = latest;
};
end
--- a/plugins/mod_storage_sql.lua Fri Aug 23 01:10:27 2019 +0200
+++ b/plugins/mod_storage_sql.lua Fri Aug 23 01:15:44 2019 +0200
@@ -424,7 +424,7 @@
local user,store = username,self.store;
local ok, result = engine:transaction(function()
local sql_query = [[
- SELECT DISTINCT "with", COUNT(*), MAX("when")
+ SELECT DISTINCT "with", COUNT(*), MIN("when"), MAX("when")
FROM "prosodyarchive"
WHERE %s
GROUP BY "with"
@@ -447,14 +447,16 @@
end);
if not ok then return ok, result end
local counts = {};
- local latest = {};
+ local earliest, latest = {}, {};
for row in result do
local with, count = row[1], row[2];
counts[with] = count;
- latest[with] = row[3];
+ earliest[with] = row[3];
+ latest[with] = row[4];
end
return {
counts = counts;
+ earliest = earliest;
latest = latest;
};
end