Mercurial > prosody-hg
comparison plugins/mod_storage_internal.lua @ 9903:2c5546cc5c70
mod_storage_internal: Implement a summary API returning message counts per contact
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Mon, 25 Feb 2019 15:48:28 +0100 |
| parents | 6bd65bff03b5 |
| children | 7c4631d7b6fb |
comparison
equal
deleted
inserted
replaced
| 9902:3eea63a68e0f | 9903:2c5546cc5c70 |
|---|---|
| 194 local items, err = datamanager.list_load(username, host, self.store); | 194 local items, err = datamanager.list_load(username, host, self.store); |
| 195 if not items then return items, err; end | 195 if not items then return items, err; end |
| 196 return array(items):pluck("when"):map(datetime.date):unique(); | 196 return array(items):pluck("when"):map(datetime.date):unique(); |
| 197 end | 197 end |
| 198 | 198 |
| 199 function archive:summary(username, query) | |
| 200 local iter, err = self:find(username, query) | |
| 201 if not iter then return iter, err; end | |
| 202 local summary = {}; | |
| 203 for _, _, _, with in iter do | |
| 204 summary[with] = (summary[with] or 0) + 1; | |
| 205 end | |
| 206 return summary; | |
| 207 end | |
| 208 | |
| 199 function archive:delete(username, query) | 209 function archive:delete(username, query) |
| 200 local cache_key = jid_join(username, host, self.store); | 210 local cache_key = jid_join(username, host, self.store); |
| 201 if not query or next(query) == nil then | 211 if not query or next(query) == nil then |
| 202 archive_item_count_cache:set(cache_key, nil); | 212 archive_item_count_cache:set(cache_key, nil); |
| 203 return datamanager.list_store(username, host, self.store, nil); | 213 return datamanager.list_store(username, host, self.store, nil); |
