<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <link>http://hg.omfa.de/prosody-hg/</link>
    <language>en-us</language>

    <title>prosody-hg: plugins/mod_storage_internal.lua history</title>
    <description>plugins/mod_storage_internal.lua revision history</description>
    <item>
    <title>mod_storage_internal: Return item-not-found for unknown before/after ids</title>
    <link>http://hg.omfa.de/prosody-hg/log/f77911437539/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Return item-not-found for unknown before/after ids<br/>
<br/>
This is required per XEP-0313, otherwise clients cannot tell the difference<br/>
between an empty successful query and a query where their sync point is no<br/>
longer within the archive.]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Fri, 12 Dec 2025 12:43:23 +0000</pubDate>
</item>
<item>
    <title>mod_storage_internal: Fix queries with only start returning extra items</title>
    <link>http://hg.omfa.de/prosody-hg/log/cbd234461c41/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Fix queries with only start returning extra items<br/>
<br/>
Queries with start &gt; last item would return one item, because there's<br/>
some boundary condition in binary_search().<br/>
<br/>
This is here fixed by always applying filters that omit items outside<br/>
the requested range.<br/>
<br/>
See also 2374c7665d0b]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Mon, 14 Apr 2025 15:10:29 +0200</pubDate>
</item>
<item>
    <title>mod_storage_internal: Use UUIDv7 for message ids</title>
    <link>http://hg.omfa.de/prosody-hg/log/8f516d20d288/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Use UUIDv7 for message ids<br/>
<br/>
This matches what we use for SQL already, so provides some consistency.<br/>
<br/>
Client developers prefer sortable ids.]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Mon, 10 Mar 2025 11:54:52 +0000</pubDate>
</item>
<item>
    <title>mod_storage_internal: Fix off-by-one when searching archive for</title>
    <link>http://hg.omfa.de/prosody-hg/log/2374c7665d0b/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Fix off-by-one when searching archive for<br/>
<br/>
Fixes a test case provided by MattJ where the very first item matched by<br/>
a 'start' timestamp was not returned.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Thu, 15 Feb 2024 20:28:14 +0100</pubDate>
</item>
<item>
    <title>mod_storage_internal, tests: Fix before/after combined with the 'reverse' flag</title>
    <link>http://hg.omfa.de/prosody-hg/log/6877786d73d7/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal, tests: Fix before/after combined with the 'reverse' flag]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Tue, 12 Dec 2023 13:41:14 +0000</pubDate>
</item>
<item>
    <title>mod_storage_internal: Clear archive item count cache after experimental trim</title>
    <link>http://hg.omfa.de/prosody-hg/log/53c347043cb5/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Clear archive item count cache after experimental trim<br/>
<br/>
The previous count would be invalid at this point.<br/>
<br/>
Should be possible to math out how many items are left, but this is left<br/>
as future work.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sun, 26 Nov 2023 18:02:13 +0100</pubDate>
</item>
<item>
    <title>mod_storage_internal: Close lazy-loading list abstraction after trim</title>
    <link>http://hg.omfa.de/prosody-hg/log/958c759d3897/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Close lazy-loading list abstraction after trim<br/>
<br/>
Should be done here too.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sun, 26 Nov 2023 14:35:26 +0100</pubDate>
</item>
<item>
    <title>mod_storage_internal: Only close lazy-loading list store abstractions</title>
    <link>http://hg.omfa.de/prosody-hg/log/9a9455de295d/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Only close lazy-loading list store abstractions<br/>
<br/>
Since datamanager can fall back to the old method of loading the whole<br/>
list, which wouldn't come with a :close method.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sun, 26 Nov 2023 14:29:08 +0100</pubDate>
</item>
<item>
    <title>mod_storage_internal: Close archive list after completion of iteration</title>
    <link>http://hg.omfa.de/prosody-hg/log/92b7ccc76c3a/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Close archive list after completion of iteration<br/>
<br/>
This closes the two FDs that the random access list abstraction uses,<br/>
otherwise they are left to the garbage collector.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Thu, 23 Nov 2023 17:49:57 +0100</pubDate>
</item>
<item>
    <title>mod_storage_internal: Don't report error when attempting to trim empty archive</title>
    <link>http://hg.omfa.de/prosody-hg/log/e77994e88940/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Don't report error when attempting to trim empty archive<br/>
<br/>
Fixes &quot;Could not delete messages for room 'x': (nil)&quot;]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sun, 08 Oct 2023 18:21:14 +0200</pubDate>
</item>
<item>
    <title>mod_storage_internal: Fix fast trimming of archive with exactly one item</title>
    <link>http://hg.omfa.de/prosody-hg/log/9a86e7cbdd79/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Fix fast trimming of archive with exactly one item<br/>
<br/>
This method would previously never delete the first (and only) item<br/>
since it works out which item should become the first item after the<br/>
trim operation, which doesn't make sense when all should be removed.<br/>
<br/>
This also works as an optimization for when all the last item should be<br/>
trimmed, thus items should be removed.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sun, 24 Sep 2023 13:41:54 +0200</pubDate>
</item>
<item>
    <title>mod_storage_internal: Use integer option method for cache size</title>
    <link>http://hg.omfa.de/prosody-hg/log/616c578c644f/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Use integer option method for cache size<br/>
<br/>
Missed this one in previous sweep]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Tue, 18 Jul 2023 12:36:47 +0200</pubDate>
</item>
<item>
    <title>plugins: Use integer config API with interval specification where sensible</title>
    <link>http://hg.omfa.de/prosody-hg/log/50324f66ca2a/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[plugins: Use integer config API with interval specification where sensible<br/>
<br/>
Many of these fall into a few categories:<br/>
- util.cache size, must be &gt;= 1<br/>
- byte or item counts that logically can't be negative<br/>
- port numbers that should be in 1..0xffff]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Mon, 17 Jul 2023 01:38:54 +0200</pubDate>
</item>
<item>
    <title>mod_storage_internal: Implement efficient deletion of oldest archive items</title>
    <link>http://hg.omfa.de/prosody-hg/log/fe1229919070/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Implement efficient deletion of oldest archive items<br/>
<br/>
Using the new shift function in datamanager, either the oldest items are<br/>
removed or all the later items are moved into a new file that replaces<br/>
the old.<br/>
<br/>
Hidden behind a feature flag for now.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Wed, 12 Jul 2023 15:03:24 +0200</pubDate>
</item>
<item>
    <title>mod_storage_internal: Use a binary search for time based ranges</title>
    <link>http://hg.omfa.de/prosody-hg/log/396db0e7084f/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Use a binary search for time based ranges<br/>
<br/>
Iterating over an entire archive to find a few items in the far end from<br/>
where iteration started is expensive, and probably more expensive with<br/>
the lazy-loading of items added in the previous commit.<br/>
<br/>
Since we can now efficiently read items in random order, we can now use<br/>
a binary search to find a better starting point for iteration.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Wed, 12 May 2021 01:32:03 +0200</pubDate>
</item>
<item>
    <title>mod_storage_internal: Lazy-load archive items while iterating</title>
    <link>http://hg.omfa.de/prosody-hg/log/3fd24e1945b0/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Lazy-load archive items while iterating<br/>
<br/>
Very large list files previously ran into limits of the Lua parser, or<br/>
just caused Prosody to freeze while parsing.<br/>
<br/>
Using the new index we can parse individual items one at a time.  This<br/>
probably won't reduce overall CPU usage, probably the opposite, but it<br/>
will reduce the number of items in memory at once and allow collection<br/>
of items after we iterated past them.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Wed, 12 May 2021 01:25:44 +0200</pubDate>
</item>
<item>
    <title>plugins: Prefix module imports with prosody namespace</title>
    <link>http://hg.omfa.de/prosody-hg/log/74b9e05af71e/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[plugins: Prefix module imports with prosody namespace]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 24 Mar 2023 13:15:28 +0100</pubDate>
</item>
<item>
    <title>mod_storage_internal: Stop storing XEP-0091 timestamp</title>
    <link>http://hg.omfa.de/prosody-hg/log/1cac469b18d0/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Stop storing XEP-0091 timestamp<br/>
<br/>
Should no longer be used by anything since the conversion of mod_offline<br/>
to the archive API in 0.10.0, which was 4 years ago. The line clearing<br/>
the property is left for a bit longer in case someone has very old<br/>
offline messages or archived data.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sat, 04 Sep 2021 14:39:31 +0200</pubDate>
</item>
<item>
    <title>mod_storage_internal: Support query for set of IDs</title>
    <link>http://hg.omfa.de/prosody-hg/log/c3907f05bed4/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Support query for set of IDs<br/>
<br/>
Based on implementation in mod_storage_memory]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Tue, 12 Jan 2021 18:06:55 +0100</pubDate>
</item>
<item>
    <title>mod_storage_internal: Add support for full ID range query</title>
    <link>http://hg.omfa.de/prosody-hg/log/b8fada57faf0/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Add support for full ID range query<br/>
<br/>
Based on the mod_storage_memory implementation]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Tue, 12 Jan 2021 17:00:27 +0100</pubDate>
</item>
<item>
    <title>mod_storage_internal, mod_storage_memory: Add support for query.before</title>
    <link>http://hg.omfa.de/prosody-hg/log/c55bd98a54f8/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal, mod_storage_memory: Add support for query.before<br/>
<br/>
Previously returned all results.]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Fri, 12 Jun 2020 16:55:35 +0100</pubDate>
</item>
<item>
    <title>Merge 0.11-&gt;trunk</title>
    <link>http://hg.omfa.de/prosody-hg/log/05f4386c846e/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[Merge 0.11-&gt;trunk]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 15 May 2020 21:26:54 +0200</pubDate>
</item>
<item>
    <title>mod_storage_internal: Fix error in time limited queries on items without 'when' field, fixes #1557</title>
    <link>http://hg.omfa.de/prosody-hg/log/8fcd46ee9bf5/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Fix error in time limited queries on items without 'when' field, fixes #1557]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 15 May 2020 21:22:35 +0200</pubDate>
</item>
<item>
    <title>mod_storage_internal: Fix keeping old timestamp in archive map API</title>
    <link>http://hg.omfa.de/prosody-hg/log/5a6ba2f38e2b/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Fix keeping old timestamp in archive map API<br/>
<br/>
This led to a missing 'when' field on changed items, which would cause a<br/>
traceack.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 15 May 2020 20:55:22 +0200</pubDate>
</item>
<item>
    <title>mod_storage_internal: Implement key-value API</title>
    <link>http://hg.omfa.de/prosody-hg/log/f23363380599/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Implement key-value API]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Mon, 11 May 2020 21:56:19 +0200</pubDate>
</item>
<item>
    <title>mod_storage_internal: Include last text message</title>
    <link>http://hg.omfa.de/prosody-hg/log/d185c4961ee0/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Include last text message<br/>
<br/>
A protocol built on this API now allows showing a list of unread<br/>
conversations with a counter, ordered by either oldest or newest<br/>
message, along with the text body itself.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 23 Aug 2019 01:28:53 +0200</pubDate>
</item>
<item>
    <title>mod_storage_*: Also include timestmap of first message in :summary API</title>
    <link>http://hg.omfa.de/prosody-hg/log/51f145094648/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_*: Also include timestmap of first message in :summary API<br/>
<br/>
For completeness along with most recent timestamp. Might be nice to be<br/>
able to order by oldest unread message.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 23 Aug 2019 01:15:44 +0200</pubDate>
</item>
<item>
    <title>mod_storage_*: Include timestamp of latest message in :summary API</title>
    <link>http://hg.omfa.de/prosody-hg/log/068692cb9e78/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_*: Include timestamp of latest message in :summary API<br/>
<br/>
Clients may want to show a list of conversations ordered by how<br/>
timestamp of most recent message.<br/>
<br/>
The counts allow a badge with unread message counter.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 23 Aug 2019 01:10:27 +0200</pubDate>
</item>
<item>
    <title>mod_storage_*: Tweak :summary API to allow future expansion with more fields</title>
    <link>http://hg.omfa.de/prosody-hg/log/1e2b444acb72/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_*: Tweak :summary API to allow future expansion with more fields<br/>
<br/>
Eg might want to include last message, timestamp, chat state or other info.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 23 Aug 2019 01:04:00 +0200</pubDate>
</item>
<item>
    <title>mod_storage_internal: Return appropriate error even with empty archive</title>
    <link>http://hg.omfa.de/prosody-hg/log/4a0d990253a0/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Return appropriate error even with empty archive]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sun, 05 May 2019 07:24:12 +0200</pubDate>
</item>
<item>
    <title>mod_storage_internal: Return error if 'before' or 'after' are not found (partial fix for #1325)</title>
    <link>http://hg.omfa.de/prosody-hg/log/7408b9473729/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Return error if 'before' or 'after' are not found (partial fix for #1325)]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Tue, 05 Mar 2019 00:12:30 +0100</pubDate>
</item>
<item>
    <title>mod_storage_internal: Add support for iterating over users in archive stores</title>
    <link>http://hg.omfa.de/prosody-hg/log/55f5588d71c6/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Add support for iterating over users in archive stores<br/>
<br/>
May help with writing a better migrator]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sun, 05 May 2019 16:07:16 +0200</pubDate>
</item>
<item>
    <title>mod_storage_internal,memory: Only return total count if requested</title>
    <link>http://hg.omfa.de/prosody-hg/log/7c4631d7b6fb/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal,memory: Only return total count if requested]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sun, 05 May 2019 08:12:16 +0200</pubDate>
</item>
<item>
    <title>mod_storage_internal: Implement a summary API returning message counts per contact</title>
    <link>http://hg.omfa.de/prosody-hg/log/2c5546cc5c70/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Implement a summary API returning message counts per contact]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Mon, 25 Feb 2019 15:48:28 +0100</pubDate>
</item>
<item>
    <title>mod_storage_internal: Include store name when reporting quota status</title>
    <link>http://hg.omfa.de/prosody-hg/log/6bd65bff03b5/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Include store name when reporting quota status]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 22 Mar 2019 02:24:48 +0100</pubDate>
</item>
<item>
    <title>mod_storage_internal: Increase default quota to 10 000</title>
    <link>http://hg.omfa.de/prosody-hg/log/5669bb11ac7b/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Increase default quota to 10 000<br/>
<br/>
Performance doesn't seem great but 10k should be far enough from limits<br/>
inherited by the Lua parser. 1000 messages seemed pretty close to what<br/>
an active user might produce in one week.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 22 Mar 2019 02:04:34 +0100</pubDate>
</item>
<item>
    <title>mod_storage_internal,_sql: Key item count cache on both username and store</title>
    <link>http://hg.omfa.de/prosody-hg/log/64e16d1e91f6/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal,_sql: Key item count cache on both username and store]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 22 Mar 2019 18:02:27 +0100</pubDate>
</item>
<item>
    <title>mod_storage_internal,_sql: Expose archive capabilities feature set</title>
    <link>http://hg.omfa.de/prosody-hg/log/9751c17f5281/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal,_sql: Expose archive capabilities feature set<br/>
<br/>
This was planned to be added long ago but was forgotten.]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 22 Mar 2019 18:01:24 +0100</pubDate>
</item>
<item>
    <title>mod_storage_internal,_sql: Add limit to number of items in an archive store (fixes #733)</title>
    <link>http://hg.omfa.de/prosody-hg/log/f76bd399267c/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal,_sql: Add limit to number of items in an archive store (fixes #733)]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Fri, 20 Oct 2017 12:53:53 +0200</pubDate>
</item>
<item>
    <title>mod_storage_internal: Only apply truncate if there are more items than requested</title>
    <link>http://hg.omfa.de/prosody-hg/log/e735c9865f42/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Only apply truncate if there are more items than requested]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sat, 04 Aug 2018 15:44:38 +0200</pubDate>
</item>
<item>
    <title>mod_storage_internal: Skip write if no items matched a deletion query</title>
    <link>http://hg.omfa.de/prosody-hg/log/469afa02947b/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Skip write if no items matched a deletion query]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sun, 19 Nov 2017 21:00:43 +0100</pubDate>
</item>
<item>
    <title>mod_storage_internal: Optimize truncation</title>
    <link>http://hg.omfa.de/prosody-hg/log/4892c22403d5/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Optimize truncation]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 10 Nov 2017 09:44:30 +0100</pubDate>
</item>
<item>
    <title>mod_storage_internal: Allow truncating deletion at the beginning or end of an archive store</title>
    <link>http://hg.omfa.de/prosody-hg/log/b6a7b83f8d87/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Allow truncating deletion at the beginning or end of an archive store]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Thu, 09 Nov 2017 01:42:01 +0100</pubDate>
</item>
<item>
    <title>mod_storage_internal: Add more extensive query support to archive:delete method</title>
    <link>http://hg.omfa.de/prosody-hg/log/1759491b53db/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Add more extensive query support to archive:delete method]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Mon, 09 Oct 2017 01:02:17 +0200</pubDate>
</item>
<item>
    <title>mod_storage_internal: Add support for archive key deduplication (like mod_storage_sql)</title>
    <link>http://hg.omfa.de/prosody-hg/log/5281c479955a/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Add support for archive key deduplication (like mod_storage_sql)]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Mon, 09 Oct 2017 01:01:28 +0200</pubDate>
</item>
<item>
    <title>mod_storage_internal: Return a noop iterator if archive is empty (fixes #920)</title>
    <link>http://hg.omfa.de/prosody-hg/log/3ff99d49082f/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Return a noop iterator if archive is empty (fixes #920)]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Wed, 05 Jul 2017 05:44:56 +0200</pubDate>
</item>
<item>
    <title>mod_storage_internal: Handle case of empty item store when deleting (fixes #910)</title>
    <link>http://hg.omfa.de/prosody-hg/log/c4c159953c72/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Handle case of empty item store when deleting (fixes #910)]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sun, 14 May 2017 17:31:50 +0200</pubDate>
</item>
<item>
    <title>mod_storage_internal: Correctly calculate number of deleted items (fixes #912)</title>
    <link>http://hg.omfa.de/prosody-hg/log/13e075549cb3/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Correctly calculate number of deleted items (fixes #912)]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sun, 14 May 2017 17:22:33 +0200</pubDate>
</item>
<item>
    <title>mod_storage_internal: Support the 'key' archive query field</title>
    <link>http://hg.omfa.de/prosody-hg/log/4ba8cb75d925/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Support the 'key' archive query field]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Sat, 15 Apr 2017 02:27:07 +0200</pubDate>
</item>
<item>
    <title>mod_storage_internal: Add the dates method</title>
    <link>http://hg.omfa.de/prosody-hg/log/5a9d491cc714/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Add the dates method]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 31 Mar 2017 17:49:51 +0200</pubDate>
</item>
<item>
    <title>mod_storage_internal: Add support for removing archived items</title>
    <link>http://hg.omfa.de/prosody-hg/log/05e201468f27/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Add support for removing archived items]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 31 Mar 2017 17:48:50 +0200</pubDate>
</item>
<item>
    <title>mod_storage_internal: Add basic archive store implementation</title>
    <link>http://hg.omfa.de/prosody-hg/log/83f18982bcfd/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Add basic archive store implementation]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 31 Mar 2017 17:47:06 +0200</pubDate>
</item>
<item>
    <title>mod_storage_internal: Ignore unused 'self' argument [luacheck]</title>
    <link>http://hg.omfa.de/prosody-hg/log/342ce07836de/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Ignore unused 'self' argument [luacheck]]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 31 Mar 2017 17:39:41 +0200</pubDate>
</item>
<item>
    <title>mod_storage_internal: Reorder methods</title>
    <link>http://hg.omfa.de/prosody-hg/log/925098aad268/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Reorder methods]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 31 Mar 2017 17:38:46 +0200</pubDate>
</item>
<item>
    <title>mod_storage_internal: Separate driver from keyval implementation</title>
    <link>http://hg.omfa.de/prosody-hg/log/9545d0a9401f/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal: Separate driver from keyval implementation]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 31 Mar 2017 17:34:33 +0200</pubDate>
</item>
<item>
    <title>mod_storage_{none,internal,sql}: Return error for unsupported (everything but keyval) store types</title>
    <link>http://hg.omfa.de/prosody-hg/log/7cf6d3a2c855/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_{none,internal,sql}: Return error for unsupported (everything but keyval) store types]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 20 Jun 2014 16:22:23 +0200</pubDate>
</item>
<item>
    <title>mod_storage_internal, datamanager: Add support for iterating over users with data in a store</title>
    <link>http://hg.omfa.de/prosody-hg/log/688aeac0012a/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_internal, datamanager: Add support for iterating over users with data in a store]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Fri, 21 Sep 2012 17:23:08 +0200</pubDate>
</item>
<item>
    <title>Merge 0.9-&gt;trunk</title>
    <link>http://hg.omfa.de/prosody-hg/log/1443d1c37c6c/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[Merge 0.9-&gt;trunk]]></description>
    <author>&#77;&#97;&#116;&#116;&#104;&#101;&#119;&#32;&#87;&#105;&#108;&#100;&#32;&#60;&#109;&#119;&#105;&#108;&#100;&#49;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Wed, 19 Sep 2012 12:14:08 +0100</pubDate>
</item>
<item>
    <title>storagemanager, datamanager, mod_storage_{internal,sql}: Replace list_stores() with an iterator version</title>
    <link>http://hg.omfa.de/prosody-hg/log/051d352ed03c/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[storagemanager, datamanager, mod_storage_{internal,sql}: Replace list_stores() with an iterator version]]></description>
    <author>&#75;&#105;&#109;&#32;&#65;&#108;&#118;&#101;&#102;&#117;&#114;&#32;&#60;&#122;&#97;&#115;&#104;&#64;&#122;&#97;&#115;&#104;&#46;&#115;&#101;&#62;</author>
    <pubDate>Mon, 17 Sep 2012 05:42:10 +0200</pubDate>
</item>
<item>
    <title>mod_storage_*: Don't explicitly set driver name, to ease copying/renaming modules.</title>
    <link>http://hg.omfa.de/prosody-hg/log/b41c33dc7c36/plugins/mod_storage_internal.lua</link>
    <description><![CDATA[mod_storage_*: Don't explicitly set driver name, to ease copying/renaming modules.]]></description>
    <author>&#87;&#97;&#113;&#97;&#115;&#32;&#72;&#117;&#115;&#115;&#97;&#105;&#110;&#32;&#60;&#119;&#97;&#113;&#97;&#115;&#50;&#48;&#64;&#103;&#109;&#97;&#105;&#108;&#46;&#99;&#111;&#109;&#62;</author>
    <pubDate>Wed, 12 Sep 2012 23:46:10 +0500</pubDate>
</item>

  </channel>
</rss>
