X-Git-Url: https://git.enpas.org/?a=blobdiff_plain;f=core%2Fstoragemanager.lua;h=0b6679d87c8acd237dcfcd2f92091e3f5c39bd06;hb=cff6734d1cfe7b437f09ccbdbb1c103ec03b7ce4;hp=97ff084f7267f0ff109b4963707a44ff1e9d7447;hpb=d57b4c11e62962d924d82bf9e8abef80e6f2c9a0;p=prosody.git diff --git a/core/storagemanager.lua b/core/storagemanager.lua index 97ff084f..0b6679d8 100644 --- a/core/storagemanager.lua +++ b/core/storagemanager.lua @@ -1,5 +1,5 @@ -local error, type, pairs = error, type, pairs; +local type, pairs = type, pairs; local setmetatable = setmetatable; local config = require "core.configmanager"; @@ -23,7 +23,7 @@ local null_storage_driver = setmetatable( name = "null", open = function (self) return self; end }, { - __index = function (self, method) + __index = function (self, method) --luacheck: ignore 212 return null_storage_method; end } @@ -37,7 +37,7 @@ function initialize_host(host) local item = event.item; stores_available:set(host, item.name, item); end); - + host_session.events.add_handler("item-removed/storage-provider", function (event) local item = event.item; stores_available:set(host, item.name, nil); @@ -70,7 +70,7 @@ function get_driver(host, store) if not driver_name then driver_name = config.get(host, "default_storage") or "internal"; end - + local driver = load_driver(host, driver_name); if not driver then log("warn", "Falling back to null driver for %s storage on %s", store, host); @@ -86,7 +86,7 @@ function open(host, store, typ) if not ret then if err == "unsupported-store" then log("debug", "Storage driver %s does not support store %s (%s), falling back to null driver", - driver_name, store, typ); + driver_name, store, typ or ""); ret = null_storage_driver; err = nil; end @@ -96,7 +96,6 @@ end function purge(user, host) local storage = config.get(host, "storage"); - local driver_name; if type(storage) == "table" then -- multiple storage backends in use that we need to purge local purged = {}; @@ -119,6 +118,13 @@ end function datamanager.store(username, host, datastore, data) return open(host, datastore):set(username, data); end +function datamanager.users(host, datastore, typ) + local driver = open(host, datastore, typ); + if not driver.users then + return function() log("warn", "storage driver %s does not support listing users", driver.name) end + end + return driver:users(); +end function datamanager.stores(username, host, typ) return get_driver(host):stores(username, typ); end