diff --git a/src/db/main-db-p.h b/src/db/main-db-p.h index 5e9041436..29a681d58 100644 --- a/src/db/main-db-p.h +++ b/src/db/main-db-p.h @@ -53,7 +53,7 @@ private: long long insertSipAddress (const std::string &sipAddress); void insertContent (long long messageEventId, const Content &content); long long insertContentType (const std::string &contentType); - long long insertBasicChatRoom ( + long long insertOrUpdateBasicChatRoom ( long long peerSipAddressId, long long localSipAddressId, const tm &creationTime diff --git a/src/db/main-db.cpp b/src/db/main-db.cpp index 9ed69e167..b7d863467 100644 --- a/src/db/main-db.cpp +++ b/src/db/main-db.cpp @@ -190,7 +190,7 @@ MainDb::MainDb (const shared_ptr &core) : AbstractDb(*new MainDbPrivate), return q->getLastInsertId(); } - long long MainDbPrivate::insertBasicChatRoom ( + long long MainDbPrivate::insertOrUpdateBasicChatRoom ( long long peerSipAddressId, long long localSipAddressId, const tm &creationTime @@ -200,8 +200,11 @@ MainDb::MainDb (const shared_ptr &core) : AbstractDb(*new MainDbPrivate), soci::session *session = dbSession.getBackendSession(); long long id = selectChatRoomId(peerSipAddressId, localSipAddressId); - if (id >= 0) + if (id >= 0) { + *session << "UPDATE chat_room SET last_update_time = :lastUpdateTime WHERE id = :id", + soci::use(creationTime), soci::use(id); return id; + } static const int capabilities = static_cast(ChatRoom::Capabilities::Basic); lInfo() << "Insert new chat room in database: (peer=" << peerSipAddressId << @@ -2244,7 +2247,7 @@ MainDb::MainDb (const shared_ptr &core) : AbstractDb(*new MainDbPrivate), const long long &eventId = getLastInsertId(); const long long &localSipAddressId = d->insertSipAddress(message.get(LEGACY_MESSAGE_COL_LOCAL_ADDRESS)); const long long &remoteSipAddressId = d->insertSipAddress(message.get(LEGACY_MESSAGE_COL_REMOTE_ADDRESS)); - const long long &chatRoomId = d->insertBasicChatRoom( + const long long &chatRoomId = d->insertOrUpdateBasicChatRoom( remoteSipAddressId, localSipAddressId, creationTime