Software /
code /
prosody
Changeset
5733:aeeced7b0149
mod_storage_sql2: Fix iteration over users and stores
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Wed, 10 Jul 2013 12:08:44 +0200 |
parents | 5732:4aa1d6f5083a |
children | 5734:49f1fed6e25e |
files | plugins/mod_storage_sql2.lua |
diffstat | 1 files changed, 16 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/plugins/mod_storage_sql2.lua Wed Jul 10 12:01:23 2013 +0200 +++ b/plugins/mod_storage_sql2.lua Wed Jul 10 12:08:44 2013 +0200 @@ -2,6 +2,16 @@ local json = require "util.json"; local resolve_relative_path = require "core.configmanager".resolve_relative_path; +local unpack = unpack +local function iterator(result) + return function(result) + local row = result(); + if row ~= nil then + return unpack(row); + end + end, result, nil; +end + local mod_sql = module:require("sql"); local params = module:get_option("sql"); @@ -200,9 +210,11 @@ end); end function keyval_store:users() - return engine:transaction(function() + local ok, result = engine:transaction(function() return engine:select("SELECT DISTINCT `user` FROM `prosody` WHERE `host`=? AND `store`=?", host, self.store); end); + if not ok then return ok, result end + return iterator(result); end local driver = {}; @@ -220,9 +232,11 @@ if username == true or not username then username = ""; end - return engine:transaction(function() + local ok, result = engine:transaction(function() return engine:select(sql, host, username); end); + if not ok then return ok, result end + return iterator(result); end function driver:purge(username)