aboutsummaryrefslogtreecommitdiff
path: root/src/mod_mam_sql.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/mod_mam_sql.erl')
-rw-r--r--src/mod_mam_sql.erl16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/mod_mam_sql.erl b/src/mod_mam_sql.erl
index 1609ff79e..37ea8dc6f 100644
--- a/src/mod_mam_sql.erl
+++ b/src/mod_mam_sql.erl
@@ -30,7 +30,7 @@
%% 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]).
+ extended_fields/0, store/8, write_prefs/4, get_prefs/2, select/6, export/1, remove_from_archive/3]).
-include_lib("stdlib/include/ms_transform.hrl").
-include("xmpp.hrl").
@@ -56,6 +56,20 @@ remove_room(LServer, LName, LHost) ->
LUser = jid:encode({LName, LHost, <<>>}),
remove_user(LUser, LServer).
+remove_from_archive(LUser, LServer, none) ->
+ case ejabberd_sql:sql_query(LServer,
+ ?SQL("delete from archive where username=%(LUser)s and %(LServer)H")) of
+ {error, Reason} -> {error, Reason};
+ _ -> ok
+ end;
+remove_from_archive(LUser, LServer, WithJid) ->
+ Peer = jid:encode(jid:remove_resource(WithJid)),
+ case ejabberd_sql:sql_query(LServer,
+ ?SQL("delete from archive where username=%(LUser)s and %(LServer)H and bare_peer=%(Peer)s")) of
+ {error, Reason} -> {error, Reason};
+ _ -> ok
+ end.
+
delete_old_messages(ServerHost, TimeStamp, Type) ->
TS = now_to_usec(TimeStamp),
case Type of