diff --git a/Telegram/SourceFiles/ayu/data/ayu_database.cpp b/Telegram/SourceFiles/ayu/data/ayu_database.cpp index 26323230ce..3631831ab7 100644 --- a/Telegram/SourceFiles/ayu/data/ayu_database.cpp +++ b/Telegram/SourceFiles/ayu/data/ayu_database.cpp @@ -16,6 +16,15 @@ using namespace sqlite_orm; auto storage = make_storage( "./tdata/ayudata.db", + make_index("idx_deleted_message_userId_dialogId_topicId_messageId", + column(&DeletedMessage::userId), + column(&DeletedMessage::dialogId), + column(&DeletedMessage::topicId), + column(&DeletedMessage::messageId)), + make_index("idx_edited_message_userId_dialogId_messageId", + column(&EditedMessage::userId), + column(&EditedMessage::dialogId), + column(&EditedMessage::messageId)), make_table( "DeletedMessage", make_column("fakeId", &DeletedMessage::fakeId, primary_key().autoincrement()), @@ -212,13 +221,15 @@ std::vector getEditedMessages(ID userId, ID dialogId, ID messageI bool hasRevisions(ID userId, ID dialogId, ID messageId) { try { - return storage.count( + return !storage.select( + columns(column(&EditedMessage::messageId)), where( column(&EditedMessage::userId) == userId and column(&EditedMessage::dialogId) == dialogId and column(&EditedMessage::messageId) == messageId - ) - ) > 0; + ), + limit(1) + ).empty(); } catch (std::exception &ex) { LOG(("Failed to check if message has revisions: %1").arg(ex.what())); return false; @@ -251,13 +262,15 @@ std::vector getDeletedMessages(ID userId, ID dialogId, ID topicI bool hasDeletedMessages(ID userId, ID dialogId, ID topicId) { try { - return storage.count( + return !storage.select( + columns(column(&DeletedMessage::dialogId)), where( column(&DeletedMessage::userId) == userId and column(&DeletedMessage::dialogId) == dialogId and (column(&DeletedMessage::topicId) == topicId or topicId == 0) - ) - ) > 0; + ), + limit(1) + ).empty(); } catch (std::exception &ex) { LOG(("Failed to check if dialog has deleted message: %1").arg(ex.what())); return false;