diff --git a/src/db/main-db-p.h b/src/db/main-db-p.h index 9a46ac4e4..ee2cfc431 100644 --- a/src/db/main-db-p.h +++ b/src/db/main-db-p.h @@ -57,6 +57,8 @@ private: long long selectChatRoomId (long long peerSipAddressId, long long localSipAddressId) const; long long selectChatRoomId (const ChatRoomId &chatRoomId) const; + void deleteChatRoomParticipant (long long chatRoomId, long long participantSipAddressId); + // --------------------------------------------------------------------------- // Events API. // --------------------------------------------------------------------------- diff --git a/src/db/main-db.cpp b/src/db/main-db.cpp index d48ecf95d..a530c76a0 100644 --- a/src/db/main-db.cpp +++ b/src/db/main-db.cpp @@ -303,6 +303,13 @@ MainDb::MainDb (const shared_ptr &core) : AbstractDb(*new MainDbPrivate), return selectChatRoomId(peerSipAddressId, localSipAddressId); } + void MainDbPrivate::deleteChatRoomParticipant (long long chatRoomId, long long participantSipAddressId) { + soci::session *session = dbSession.getBackendSession(); + *session << "DELETE FROM chat_room_participant" + " WHERE chat_room_id = :chatRoomId AND participant_sip_address_id = :participantSipAddressId", + soci::use(chatRoomId), soci::use(participantSipAddressId); + } + // ----------------------------------------------------------------------------- shared_ptr MainDbPrivate::selectGenericConferenceEvent ( @@ -695,7 +702,8 @@ MainDb::MainDb (const shared_ptr &core) : AbstractDb(*new MainDbPrivate), break; case EventLog::Type::ConferenceParticipantRemoved: - // TODO: Deal with remove. + deleteChatRoomParticipant(chatRoomId, participantAddressId); + break; default: break;