summaryrefslogtreecommitdiff
path: root/src/mod_announce_mnesia.erl
diff options
context:
space:
mode:
authorEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-05-22 16:14:28 +0300
committerEvgeniy Khramtsov <ekhramtsov@process-one.net>2017-05-22 16:14:28 +0300
commitd7878ef1316d68910c7e2a1b67476bc210f1bc45 (patch)
tree3a7dca70644916f9bac627a00c1e2789a2682436 /src/mod_announce_mnesia.erl
parentDescribe command arguments and results in mod_muc_admin (diff)
Implement cache for mod_announce
Diffstat (limited to 'src/mod_announce_mnesia.erl')
-rw-r--r--src/mod_announce_mnesia.erl26
1 files changed, 17 insertions, 9 deletions
diff --git a/src/mod_announce_mnesia.erl b/src/mod_announce_mnesia.erl
index c298627e..f2e5c1c4 100644
--- a/src/mod_announce_mnesia.erl
+++ b/src/mod_announce_mnesia.erl
@@ -40,11 +40,11 @@
%%%===================================================================
init(_Host, _Opts) ->
ejabberd_mnesia:create(?MODULE, motd,
- [{disc_copies, [node()]},
+ [{disc_only_copies, [node()]},
{attributes,
record_info(fields, motd)}]),
ejabberd_mnesia:create(?MODULE, motd_users,
- [{disc_copies, [node()]},
+ [{disc_only_copies, [node()]},
{attributes,
record_info(fields, motd_users)}]).
@@ -55,13 +55,13 @@ set_motd_users(_LServer, USRs) ->
mnesia:write(#motd_users{us = {U, S}})
end, USRs)
end,
- mnesia:transaction(F).
+ transaction(F).
set_motd(LServer, Packet) ->
F = fun() ->
mnesia:write(#motd{server = LServer, packet = Packet})
end,
- mnesia:transaction(F).
+ transaction(F).
delete_motd(LServer) ->
F = fun() ->
@@ -76,27 +76,27 @@ delete_motd(LServer) ->
mnesia:delete({motd_users, US})
end, Users)
end,
- mnesia:transaction(F).
+ transaction(F).
get_motd(LServer) ->
case mnesia:dirty_read({motd, LServer}) of
[#motd{packet = Packet}] ->
{ok, Packet};
- _ ->
+ [] ->
error
end.
is_motd_user(LUser, LServer) ->
case mnesia:dirty_read({motd_users, {LUser, LServer}}) of
- [#motd_users{}] -> true;
- _ -> false
+ [#motd_users{}] -> {ok, true};
+ _ -> {ok, false}
end.
set_motd_user(LUser, LServer) ->
F = fun() ->
mnesia:write(#motd_users{us = {LUser, LServer}})
end,
- mnesia:transaction(F).
+ transaction(F).
need_transform(#motd{server = S}) when is_list(S) ->
?INFO_MSG("Mnesia table 'motd' will be converted to binary", []),
@@ -124,3 +124,11 @@ import(LServer, <<"motd">>, [LUser, <<>>, _TimeStamp]) ->
%%%===================================================================
%%% Internal functions
%%%===================================================================
+transaction(F) ->
+ case mnesia:transaction(F) of
+ {atomic, Res} ->
+ Res;
+ {aborted, Reason} ->
+ ?ERROR_MSG("Mnesia transaction failed: ~p", [Reason]),
+ {error, db_failure}
+ end.