From d22ca5c3b1f7935907860d720e5fa4755dc837b4 Mon Sep 17 00:00:00 2001 From: Ronan Abhamon Date: Tue, 10 Oct 2017 11:07:49 +0200 Subject: [PATCH] feat(EventsDb): cleanHistory deal with mask parameter --- src/db/events-db.cpp | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/db/events-db.cpp b/src/db/events-db.cpp index 738a9e798..f2cf3f549 100644 --- a/src/db/events-db.cpp +++ b/src/db/events-db.cpp @@ -650,24 +650,26 @@ EventsDb::EventsDb () : AbstractDb(*new EventsDbPrivate) {} void EventsDb::cleanHistory (const string &peerAddress, FilterMask mask) { L_D(); - // TODO: Deal with mask. - (void)mask; - if (!isConnected()) { lWarning() << "Unable to clean history. Not connected."; return; } + string query; + if (mask == EventsDb::NoFilter || mask & MessageFilter) + query += "SELECT event_id FROM message_event WHERE chat_room_id = (" + " SELECT peer_sip_address_id FROM chat_room WHERE peer_sip_address_id = (" + " SELECT id FROM sip_address WHERE value = :peerAddress" + " )" + ")"; + + if (query.empty()) + return; + L_BEGIN_LOG_EXCEPTION soci::session *session = d->dbSession.getBackendSession(); - *session << "DELETE FROM event WHERE id IN (" - " SELECT event_id FROM message_event WHERE chat_room_id = (" - " SELECT peer_sip_address_id FROM chat_room WHERE peer_sip_address_id = (" - " SELECT id FROM sip_address WHERE value = :peerAddress" - " )" - " )" - ")"; + *session << "DELETE FROM event WHERE id IN (" + query + ")", soci::use(peerAddress); L_END_LOG_EXCEPTION }