diff options
Diffstat (limited to 'src/mod_vcard_xupdate_riak.erl')
-rw-r--r-- | src/mod_vcard_xupdate_riak.erl | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/mod_vcard_xupdate_riak.erl b/src/mod_vcard_xupdate_riak.erl new file mode 100644 index 000000000..129a0c6a2 --- /dev/null +++ b/src/mod_vcard_xupdate_riak.erl @@ -0,0 +1,44 @@ +%%%------------------------------------------------------------------- +%%% @author Evgeny Khramtsov <ekhramtsov@process-one.net> +%%% @copyright (C) 2016, Evgeny Khramtsov +%%% @doc +%%% +%%% @end +%%% Created : 13 Apr 2016 by Evgeny Khramtsov <ekhramtsov@process-one.net> +%%%------------------------------------------------------------------- +-module(mod_vcard_xupdate_riak). + +%% API +-export([init/2, import/2, add_xupdate/3, get_xupdate/2, remove_xupdate/2]). + +-include("mod_vcard_xupdate.hrl"). + +%%%=================================================================== +%%% API +%%%=================================================================== +init(_Host, _Opts) -> + ok. + +add_xupdate(LUser, LServer, Hash) -> + {atomic, ejabberd_riak:put(#vcard_xupdate{us = {LUser, LServer}, + hash = Hash}, + vcard_xupdate_schema())}. + +get_xupdate(LUser, LServer) -> + case ejabberd_riak:get(vcard_xupdate, vcard_xupdate_schema(), + {LUser, LServer}) of + {ok, #vcard_xupdate{hash = Hash}} -> Hash; + _ -> undefined + end. + +remove_xupdate(LUser, LServer) -> + {atomic, ejabberd_riak:delete(vcard_xupdate, {LUser, LServer})}. + +import(_LServer, #vcard_xupdate{} = R) -> + ejabberd_riak:put(R, vcard_xupdate_schema()). + +%%%=================================================================== +%%% Internal functions +%%%=================================================================== +vcard_xupdate_schema() -> + {record_info(fields, vcard_xupdate), #vcard_xupdate{}}. |