# HG changeset patch # User Kim Alvefur # Date 1566515744 -7200 # Node ID 51f145094648c80cd12e8e4085032c530063a292 # Parent 068692cb9e78e578d1eb4b3aa1a6fa38fc2bbc19 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. diff -r 068692cb9e78 -r 51f145094648 plugins/mod_storage_internal.lua --- 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 diff -r 068692cb9e78 -r 51f145094648 plugins/mod_storage_memory.lua --- 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 diff -r 068692cb9e78 -r 51f145094648 plugins/mod_storage_sql.lua --- 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