aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEvgeny Khramtsov <ekhramtsov@process-one.net>2019-01-08 13:41:16 +0300
committerEvgeny Khramtsov <ekhramtsov@process-one.net>2019-01-08 13:41:16 +0300
commitedf03b0f3de1a9815803dc56f51efe6d28a721f9 (patch)
tree9e08428a1e4836e949523f43a238a0f16e112eab
parentFix decompressing of custom elements with custom namespace (diff)
mod_offline: make some database callbacks optional
-rw-r--r--src/mod_offline.erl12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/mod_offline.erl b/src/mod_offline.erl
index 84187eb70..c866583a0 100644
--- a/src/mod_offline.erl
+++ b/src/mod_offline.erl
@@ -101,6 +101,8 @@
-callback remove_all_messages(binary(), binary()) -> {atomic, any()}.
-callback count_messages(binary(), binary()) -> non_neg_integer().
+-optional_callbacks([remove_expired_messages/1, remove_old_messages/2]).
+
depends(_Host, _Opts) ->
[].
@@ -551,12 +553,18 @@ privacy_check_packet(#{lserver := LServer} = State, Pkt, Dir) ->
remove_expired_messages(Server) ->
LServer = jid:nameprep(Server),
Mod = gen_mod:db_mod(LServer, ?MODULE),
- Mod:remove_expired_messages(LServer).
+ case erlang:function_exported(Mod, remove_expired_messages, 1) of
+ true -> Mod:remove_expired_messages(LServer);
+ false -> erlang:error(not_implemented)
+ end.
remove_old_messages(Days, Server) ->
LServer = jid:nameprep(Server),
Mod = gen_mod:db_mod(LServer, ?MODULE),
- Mod:remove_old_messages(Days, LServer).
+ case erlang:function_exported(Mod, remove_old_messages, 2) of
+ true -> Mod:remove_old_messages(Days, LServer);
+ false -> erlang:error(not_implemented)
+ end.
-spec remove_user(binary(), binary()) -> ok.
remove_user(User, Server) ->