Added MySQL support for delete_old_messages (offline) command.

This commit is contained in:
Jerome Sautret 2015-03-13 18:29:57 +01:00 committed by Christophe Romain
parent 4d2924a3ef
commit 6b67a66a1b
2 changed files with 15 additions and 2 deletions

View File

@ -79,6 +79,7 @@ CREATE TABLE spool (
) ENGINE=InnoDB CHARACTER SET utf8;
CREATE INDEX i_despool USING BTREE ON spool(username);
CREATE INDEX i_spool_created_at USING BTREE ON spool(created_at);
CREATE TABLE vcard (
username varchar(250) PRIMARY KEY,

View File

@ -236,7 +236,7 @@ store_offline_msg(Host, {User, _}, Msgs, Len, MaxOfflineMsgs,
Len + count_offline_messages(User, Host);
true -> 0
end,
if
if
Count > MaxOfflineMsgs ->
discard_warn_sender(Msgs);
true ->
@ -561,7 +561,19 @@ remove_old_messages(Days, _LServer, mnesia) ->
ok, offline_msg)
end,
mnesia:transaction(F);
remove_old_messages(_Days, _LServer, odbc) ->
remove_old_messages(Days, LServer, odbc) ->
case catch ejabberd_odbc:sql_query(
LServer,
[<<"DELETE FROM spool"
" WHERE created_at < "
"DATE_SUB(CURDATE(), INTERVAL ">>,
integer_to_list(Days), <<" DAY);">>]) of
{updated, N} ->
?INFO_MSG("~p message(s) deleted from offline spool", [N]);
_Error ->
?ERROR_MSG("Cannot delete message in offline spool: ~p", [_Error])
end,
{atomic, ok};
remove_old_messages(_Days, _LServer, riak) ->
{atomic, ok}.