From 3a36854e2871223e42bc878c23575e3ce075b8d5 Mon Sep 17 00:00:00 2001 From: Ronan Abhamon Date: Wed, 11 Oct 2017 11:10:14 +0200 Subject: [PATCH] feat(EventsDb): update message state when all message_participant are removed --- src/db/events-db.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/db/events-db.cpp b/src/db/events-db.cpp index 2ade6da98..da472eeae 100644 --- a/src/db/events-db.cpp +++ b/src/db/events-db.cpp @@ -267,11 +267,10 @@ EventsDb::EventsDb () : AbstractDb(*new EventsDbPrivate) {} soci::use(static_cast(state)), soci::use(messageEventId), soci::use(sipAddressId) ); statement.execute(true); - if (statement.get_affected_rows() == 0 && state != ChatMessage::State::Displayed) { + if (statement.get_affected_rows() == 0 && state != ChatMessage::State::Displayed) *session << "INSERT INTO message_participant (message_event_id, sip_address_id, state)" " VALUES (:messageEventId, :sipAddressId, :state)", soci::use(messageEventId), soci::use(sipAddressId), soci::use(static_cast(state)); - } } // ----------------------------------------------------------------------------- @@ -535,7 +534,7 @@ EventsDb::EventsDb () : AbstractDb(*new EventsDbPrivate) {} " AFTER UPDATE OF state ON message_participant FOR EACH ROW" " WHEN NEW.state = "; participantMessageDeleter += displayedId; - participantMessageDeleter += " AND (SELECT COUNT(*) FROM (" + participantMessageDeleter += " AND (SELECT COUNT(*) FROM (" " SELECT state FROM message_participant WHERE" " NEW.message_event_id = message_participant.message_event_id" " AND state <> "; @@ -544,6 +543,9 @@ EventsDb::EventsDb () : AbstractDb(*new EventsDbPrivate) {} " )) = 0" " BEGIN" " DELETE FROM message_participant WHERE NEW.message_event_id = message_participant.message_event_id;" + " UPDATE message_event SET state = "; + participantMessageDeleter += displayedId; + participantMessageDeleter += " WHERE event_id = NEW.message_event_id;" " END"; *session << participantMessageDeleter;