mod_storage_internal: Support query for set of IDs
authorKim Alvefur <zash@zash.se>
Tue, 12 Jan 2021 18:06:55 +0100
changeset 11282 c3907f05bed4
parent 11281 1256f32f21b6
child 11283 f225070e2b8a
mod_storage_internal: Support query for set of IDs Based on implementation in mod_storage_memory
plugins/mod_storage_internal.lua
--- a/plugins/mod_storage_internal.lua	Tue Jan 12 18:06:33 2021 +0100
+++ b/plugins/mod_storage_internal.lua	Tue Jan 12 18:06:55 2021 +0100
@@ -6,6 +6,7 @@
 local now = require "util.time".now;
 local id = require "util.id".medium;
 local jid_join = require "util.jid".join;
+local set = require "util.set";
 
 local host = module.host;
 
@@ -53,6 +54,7 @@
 	quota = archive_item_limit;
 	truncate = true;
 	full_id_range = true;
+	ids = true;
 };
 
 function archive:append(username, key, value, when, with)
@@ -144,6 +146,12 @@
 				return item.key == query.key;
 			end);
 		end
+		if query.ids then
+			local ids = set.new(query.ids);
+			items:filter(function (item)
+				return ids:contains(item.key);
+			end);
+		end
 		if query.with then
 			items:filter(function (item)
 				return item.with == query.with;