From 7bb67214006c9bf6046f67757d6618b6c794b41a Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Tue, 5 Dec 2017 10:38:58 +0100 Subject: [PATCH] Remove contents and insert them again until update algorithm is done --- src/db/main-db-p.h | 1 + src/db/main-db.cpp | 19 ++++++++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/db/main-db-p.h b/src/db/main-db-p.h index d4c90cfd6..49a91299f 100644 --- a/src/db/main-db-p.h +++ b/src/db/main-db-p.h @@ -53,6 +53,7 @@ private: long long insertSipAddress (const std::string &sipAddress); void insertContent (long long messageEventId, const Content &content); void updateContent (long long messageEventId, long long messageContentId, const Content &content); + void removeContentsForChatMessageEvent (long long messageEventId); long long insertContentType (const std::string &contentType); long long insertBasicChatRoom ( long long peerSipAddressId, diff --git a/src/db/main-db.cpp b/src/db/main-db.cpp index a7baed403..6bcff9775 100644 --- a/src/db/main-db.cpp +++ b/src/db/main-db.cpp @@ -187,6 +187,18 @@ MainDb::MainDb (const shared_ptr &core) : AbstractDb(*new MainDbPrivate), soci::use(appData.first), soci::use(appData.second), soci::use(messageContentId); } + void MainDbPrivate::removeContentsForChatMessageEvent (long long eventId) { + soci::session *session = dbSession.getBackendSession(); + + *session << "DELETE FROM chat_message_content WHERE event_id=:eventId", soci::use(eventId); + + //TODO: remove file content if exists + //*session << "DELETE FROM chat_message_file_content WHERE chat_message_content_id=:messageContentId", soci::use(messageContentId); + + //TODO: remove contents' app_data + //*session << "DELETE FROM chat_message_content_app_data WHERE chat_message_content_id=:messageContentId", soci::use(messageContentId); + } + long long MainDbPrivate::insertContentType (const string &contentType) { L_Q(); soci::session *session = dbSession.getBackendSession(); @@ -704,9 +716,10 @@ MainDb::MainDb (const shared_ptr &core) : AbstractDb(*new MainDbPrivate), *session << "UPDATE conference_chat_message_event SET state = :state WHERE event_id = :eventId", soci::use(state), soci::use(eventId); - /*for (const Content *content : chatMessage->getContents()) - updateContent(eventId, *content);*/ - //TODO check if content needs to be inserted, updated or removed + //TODO: improve + removeContentsForChatMessageEvent(eventId); + for (const Content *content : chatMessage->getContents()) + insertContent(eventId, *content); } long long MainDbPrivate::insertConferenceNotifiedEvent (const shared_ptr &eventLog, long long *chatRoomId) {