plugins/mod_storage_sql.lua
changeset 5130 051d352ed03c
parent 5056 a125daa42ad4
child 5132 ce6546f867f9
equal deleted inserted replaced
5129:e8253c931166 5130:051d352ed03c
   372 		return setmetatable({ store = store }, keyval_store);
   372 		return setmetatable({ store = store }, keyval_store);
   373 	end
   373 	end
   374 	return nil, "unsupported-store";
   374 	return nil, "unsupported-store";
   375 end
   375 end
   376 
   376 
   377 function driver:list_stores(username) -- Not to be confused with the list store type
   377 function driver:stores(username) -- Not to be confused with the list store type
   378 	local sql = (username == true
   378 	local sql = "SELECT DISTINCT `store` FROM `prosody` WHERE `host`=? AND `user`" ..
   379 		and "SELECT DISTINCT `store` FROM `prosody` WHERE `host`=? AND `user`!=?"
   379 		(username == true and "!=?" or "=?");
   380 		or  "SELECT DISTINCT `store` FROM `prosody` WHERE `host`=? AND `user`=?");
       
   381 	if username == true or not username then
   380 	if username == true or not username then
   382 		username = "";
   381 		username = "";
   383 	end
   382 	end
   384 	local stmt, err = dosql(sql, host, username);
   383 	local stmt, err = dosql(sql, host, username);
   385 	if not stmt then
   384 	if not stmt then
   386 		return rollback(nil, err);
   385 		return rollback(nil, err);
   387 	end
   386 	end
   388 	local stores = {};
   387 	local next = stmt:rows();
   389 	for row in stmt:rows() do
   388 	return commit(function()
   390 		stores[#stores+1] = row[1];
   389 		local row = next();
   391 	end
   390 		return row and row[1];
   392 	return commit(stores);
   391 	end);
   393 end
   392 end
   394 
   393 
   395 function driver:purge(username)
   394 function driver:purge(username)
   396 	local stmt, err = dosql("DELETE FROM `prosody` WHERE `host`=? AND `user`=?", host, username);
   395 	local stmt, err = dosql("DELETE FROM `prosody` WHERE `host`=? AND `user`=?", host, username);
   397 	if not stmt then return rollback(stmt, err); end
   396 	if not stmt then return rollback(stmt, err); end