diff options
Diffstat (limited to 'src/mod_mam_sql.erl')
-rw-r--r-- | src/mod_mam_sql.erl | 16 |
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 |