diff options
Diffstat (limited to 'src/mod_private.erl')
-rw-r--r-- | src/mod_private.erl | 51 |
1 files changed, 12 insertions, 39 deletions
diff --git a/src/mod_private.erl b/src/mod_private.erl index 301880e97..a925eecdf 100644 --- a/src/mod_private.erl +++ b/src/mod_private.erl @@ -152,13 +152,9 @@ set_data(LUser, LServer, {XMLNS, El}, odbc) -> odbc_queries:set_private_data(LServer, Username, LXMLNS, SData); set_data(LUser, LServer, {XMLNS, El}, riak) -> - Username = LUser, - Key = <<LUser/binary, $@, LServer/binary, $@, XMLNS/binary>>, - SData = xml:element_to_binary(El), - ejabberd_riak:put( - LServer, <<"private">>, Key, SData, - [{<<"user_bin">>, Username}]), - ok. + ejabberd_riak:put(#private_storage{usns = {LUser, LServer, XMLNS}, + xml = El}, + [{'2i', [{<<"us">>, {LUser, LServer}}]}]). get_data(LUser, LServer, Data) -> get_data(LUser, LServer, @@ -195,18 +191,13 @@ get_data(LUser, LServer, odbc, [{XMLNS, El} | Els], end; get_data(LUser, LServer, riak, [{XMLNS, El} | Els], Res) -> - Key = <<LUser/binary, $@, LServer/binary, $@, XMLNS/binary>>, - case ejabberd_riak:get(LServer, <<"private">>, Key) of - {ok, SData} -> - case xml_stream:parse_element(SData) of - Data when element(1, Data) == xmlelement -> - get_data(LUser, LServer, riak, Els, [Data | Res]) - end; - _ -> - get_data(LUser, LServer, riak, Els, [El | Res]) + case ejabberd_riak:get(private_storage, {LUser, LServer, XMLNS}) of + {ok, #private_storage{xml = NewEl}} -> + get_data(LUser, LServer, riak, Els, [NewEl|Res]); + _ -> + get_data(LUser, LServer, riak, Els, [El|Res]) end. - get_data(LUser, LServer) -> get_all_data(LUser, LServer, gen_mod:db_type(LServer, ?MODULE)). @@ -234,19 +225,10 @@ get_all_data(LUser, LServer, odbc) -> [] end; get_all_data(LUser, LServer, riak) -> - Username = LUser, case ejabberd_riak:get_by_index( - LServer, <<"private">>, <<"user_bin">>, Username) of + private_storage, <<"us">>, {LUser, LServer}) of {ok, Res} -> - lists:flatmap( - fun(SData) -> - case xml_stream:parse_element(SData) of - #xmlel{} = El -> - [El]; - _ -> - [] - end - end, Res); + [El || #private_storage{xml = El} <- Res]; _ -> [] end. @@ -279,17 +261,8 @@ remove_user(LUser, LServer, odbc) -> odbc_queries:del_user_private_storage(LServer, Username); remove_user(LUser, LServer, riak) -> - Username = LUser, - case ejabberd_riak:get_keys_by_index( - LServer, <<"private">>, <<"user_bin">>, Username) of - {ok, Keys} -> - lists:foreach( - fun(Key) -> - ejabberd_riak:delete(LServer, <<"private">>, Key) - end, Keys); - _ -> - ok - end. + {atomic, ejabberd_riak:delete_by_index(private_storage, + <<"us">>, {LUser, LServer})}. update_table() -> Fields = record_info(fields, private_storage), |