Mercurial > prosody-modules
comparison mod_storage_xmlarchive/mod_storage_xmlarchive.lua @ 5729:79ba1a1a75cc
mod_storage_xmlarchive: Fix "user" iteration API
Fixes use in prosody-migrator.
Otherwise this particular API is not used much, or this would have been
noticed before. Usually it is a different store like 'accounts' that is
responsible for providing the authoritative list of users.
Thanks Ge0rG for testing
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Thu, 23 Nov 2023 16:16:34 +0100 |
parents | 98bf0f597df4 |
children | 100110d539d3 |
comparison
equal
deleted
inserted
replaced
5728:80702e33ba71 | 5729:79ba1a1a75cc |
---|---|
11 local st = require"util.stanza"; | 11 local st = require"util.stanza"; |
12 local dt = require"util.datetime"; | 12 local dt = require"util.datetime"; |
13 local new_stream = require "util.xmppstream".new; | 13 local new_stream = require "util.xmppstream".new; |
14 local xml = require "util.xml"; | 14 local xml = require "util.xml"; |
15 local async = require "util.async"; | 15 local async = require "util.async"; |
16 local it = require "util.iterators"; | |
16 local empty = {}; | 17 local empty = {}; |
17 | 18 |
18 if not dm.append_raw then | 19 if not dm.append_raw then |
19 module:require"datamanager_append_raw"; | 20 module:require"datamanager_append_raw"; |
20 end | 21 end |
436 assert(type(dates[1]) == "string" and type(dates[#dates]) == "string", | 437 assert(type(dates[1]) == "string" and type(dates[#dates]) == "string", |
437 "Archive does not appear to be in xmlarchive format"); | 438 "Archive does not appear to be in xmlarchive format"); |
438 return dates; | 439 return dates; |
439 end | 440 end |
440 | 441 |
442 -- filter out the 'user@yyyy-mm-dd' stores | |
443 local function skip_at_date(item) | |
444 return not item:find("@"); | |
445 end | |
446 | |
441 function archive:users() | 447 function archive:users() |
442 return dm.users(module.host, self.store, "list"); | 448 return it.filter(skip_at_date, dm.users(module.host, self.store, "list")); |
443 end | 449 end |
444 | 450 |
445 local provider = {}; | 451 local provider = {}; |
446 function provider:open(store, typ) | 452 function provider:open(store, typ) |
447 if typ ~= "archive" then return nil, "unsupported-store"; end | 453 if typ ~= "archive" then return nil, "unsupported-store"; end |