Mercurial > prosody-modules
comparison mod_pubsub_feeds/mod_pubsub_feeds.lua @ 5577:e7792188540a
mod_pubsub_feeds: Retrieve only the most recent item to compare
Only need one item id.
Fetching all items probably caused memory usage peaks.
| author | Kim Alvefur <zash@zash.se> |
|---|---|
| date | Sun, 25 Jun 2023 19:58:45 +0200 |
| parents | c729a38f21b1 |
| children | b9821e9a21a2 |
comparison
equal
deleted
inserted
replaced
| 5576:c729a38f21b1 | 5577:e7792188540a |
|---|---|
| 79 end | 79 end |
| 80 local entries = {}; | 80 local entries = {}; |
| 81 for entry in feed:childtags("entry") do | 81 for entry in feed:childtags("entry") do |
| 82 table.insert(entries, entry); | 82 table.insert(entries, entry); |
| 83 end | 83 end |
| 84 local ok, items = pubsub.service:get_items(node, true); | 84 local ok, last_id = pubsub.service:get_last_item(node, true); |
| 85 if not ok then | 85 if not ok then |
| 86 module:log("error", "PubSub node %q missing: %s", node, items); | 86 module:log("error", "PubSub node %q missing: %s", node, last_id); |
| 87 return | 87 return |
| 88 end | 88 end |
| 89 | 89 |
| 90 local start_from = #entries; | 90 local start_from = #entries; |
| 91 for i, entry in ipairs(entries) do | 91 for i, entry in ipairs(entries) do |
| 100 return; | 100 return; |
| 101 end | 101 end |
| 102 entry:text_tag("id", id); | 102 entry:text_tag("id", id); |
| 103 end | 103 end |
| 104 | 104 |
| 105 if items[id] then | 105 if last_id == id then |
| 106 -- This should be the first item that we already have. | 106 -- This should be the first item that we already have. |
| 107 start_from = i-1; | 107 start_from = i-1; |
| 108 break | 108 break |
| 109 end | 109 end |
| 110 end | 110 end |
