diff options
author | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2014-07-14 07:49:02 +0400 |
---|---|---|
committer | Evgeniy Khramtsov <ekhramtsov@process-one.net> | 2014-07-14 08:24:44 +0400 |
commit | 792b5a24dfca19fe62406e555675a236c09c20e4 (patch) | |
tree | d26b12b2cf2992976711fe4d226d47e8b937c3c7 /src/mod_private.erl | |
parent | Merge pull request #248 from mathiasertl/master (diff) |
Serialize records to proplists before storing then in Riak
Diffstat (limited to 'src/mod_private.erl')
-rw-r--r-- | src/mod_private.erl | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/src/mod_private.erl b/src/mod_private.erl index ce002a3e0..9fdf09dd8 100644 --- a/src/mod_private.erl +++ b/src/mod_private.erl @@ -154,6 +154,7 @@ set_data(LUser, LServer, {XMLNS, El}, odbc) -> set_data(LUser, LServer, {XMLNS, El}, riak) -> ejabberd_riak:put(#private_storage{usns = {LUser, LServer, XMLNS}, xml = El}, + private_storage_schema(), [{'2i', [{<<"us">>, {LUser, LServer}}]}]). get_data(LUser, LServer, Data) -> @@ -191,7 +192,8 @@ get_data(LUser, LServer, odbc, [{XMLNS, El} | Els], end; get_data(LUser, LServer, riak, [{XMLNS, El} | Els], Res) -> - case ejabberd_riak:get(private_storage, {LUser, LServer, XMLNS}) of + case ejabberd_riak:get(private_storage, private_storage_schema(), + {LUser, LServer, XMLNS}) of {ok, #private_storage{xml = NewEl}} -> get_data(LUser, LServer, riak, Els, [NewEl|Res]); _ -> @@ -226,13 +228,17 @@ get_all_data(LUser, LServer, odbc) -> end; get_all_data(LUser, LServer, riak) -> case ejabberd_riak:get_by_index( - private_storage, <<"us">>, {LUser, LServer}) of + private_storage, private_storage_schema(), + <<"us">>, {LUser, LServer}) of {ok, Res} -> [El || #private_storage{xml = El} <- Res]; _ -> [] end. +private_storage_schema() -> + {record_info(fields, private_storage), #private_storage{}}. + remove_user(User, Server) -> LUser = jlib:nodeprep(User), LServer = jlib:nameprep(Server), @@ -307,7 +313,9 @@ import(LServer) -> import(_LServer, mnesia, #private_storage{} = PS) -> mnesia:dirty_write(PS); + import(_LServer, riak, #private_storage{usns = {LUser, LServer, _}} = PS) -> - ejabberd_riak:put(PS, [{'2i', [{<<"us">>, {LUser, LServer}}]}]); + ejabberd_riak:put(PS, private_storage_schema(), + [{'2i', [{<<"us">>, {LUser, LServer}}]}]); import(_, _, _) -> pass. |