diff options
author | Christoph Scholz <christoph.scholz@gmail.com> | 2019-01-27 15:35:06 +0100 |
---|---|---|
committer | Christoph Scholz <christoph.scholz@gmail.com> | 2019-02-18 13:42:45 +0100 |
commit | 2e586000d7e550d44799049d9a66f81767c0db25 (patch) | |
tree | dea399f65303912806572dfa532cd347df40f5f1 /src/mod_mam_sql.erl | |
parent | option to prevent archive removal on room destroy (diff) |
allow check if archive is empty for or user or room
Diffstat (limited to 'src/mod_mam_sql.erl')
-rw-r--r-- | src/mod_mam_sql.erl | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/src/mod_mam_sql.erl b/src/mod_mam_sql.erl index bcfa0670..6242de3c 100644 --- a/src/mod_mam_sql.erl +++ b/src/mod_mam_sql.erl @@ -30,7 +30,8 @@ %% API -export([init/2, remove_user/2, remove_room/3, delete_old_messages/3, - extended_fields/0, store/8, write_prefs/4, get_prefs/2, select/6, export/1, remove_from_archive/3]). + extended_fields/0, store/8, write_prefs/4, get_prefs/2, select/6, export/1, remove_from_archive/3, + is_empty_for_user/2, is_empty_for_room/3]). -include_lib("stdlib/include/ms_transform.hrl"). -include("xmpp.hrl"). @@ -264,6 +265,23 @@ export(_Server) -> [] end}]. +is_empty_for_user(LUser, LServer) -> + case ejabberd_sql:sql_query( + LServer, + ?SQL("select @(count(*))d from archive" + " where username=%(LUser)s and %(LServer)H")) of + {selected, [{Res}]} -> + case Res of + 0 -> true; + _ -> false + end; + _ -> false + end. + +is_empty_for_room(LServer, LName, LHost) -> + LUser = jid:encode({LName, LHost, <<>>}), + is_empty_for_user(LUser, LServer). + %%%=================================================================== %%% Internal functions %%%=================================================================== |