mirror of
https://github.com/AyuGram/AyuGramDesktop.git
synced 2025-05-30 11:43:55 +02:00
feat: speed-up ayudata queries
This commit is contained in:
parent
b3552d8c2c
commit
b6e25a353d
1 changed files with 19 additions and 6 deletions
|
@ -16,6 +16,15 @@
|
||||||
using namespace sqlite_orm;
|
using namespace sqlite_orm;
|
||||||
auto storage = make_storage(
|
auto storage = make_storage(
|
||||||
"./tdata/ayudata.db",
|
"./tdata/ayudata.db",
|
||||||
|
make_index("idx_deleted_message_userId_dialogId_topicId_messageId",
|
||||||
|
column<DeletedMessage>(&DeletedMessage::userId),
|
||||||
|
column<DeletedMessage>(&DeletedMessage::dialogId),
|
||||||
|
column<DeletedMessage>(&DeletedMessage::topicId),
|
||||||
|
column<DeletedMessage>(&DeletedMessage::messageId)),
|
||||||
|
make_index("idx_edited_message_userId_dialogId_messageId",
|
||||||
|
column<EditedMessage>(&EditedMessage::userId),
|
||||||
|
column<EditedMessage>(&EditedMessage::dialogId),
|
||||||
|
column<EditedMessage>(&EditedMessage::messageId)),
|
||||||
make_table<DeletedMessage>(
|
make_table<DeletedMessage>(
|
||||||
"DeletedMessage",
|
"DeletedMessage",
|
||||||
make_column("fakeId", &DeletedMessage::fakeId, primary_key().autoincrement()),
|
make_column("fakeId", &DeletedMessage::fakeId, primary_key().autoincrement()),
|
||||||
|
@ -212,13 +221,15 @@ std::vector<EditedMessage> getEditedMessages(ID userId, ID dialogId, ID messageI
|
||||||
|
|
||||||
bool hasRevisions(ID userId, ID dialogId, ID messageId) {
|
bool hasRevisions(ID userId, ID dialogId, ID messageId) {
|
||||||
try {
|
try {
|
||||||
return storage.count<EditedMessage>(
|
return !storage.select(
|
||||||
|
columns(column<EditedMessage>(&EditedMessage::messageId)),
|
||||||
where(
|
where(
|
||||||
column<EditedMessage>(&EditedMessage::userId) == userId and
|
column<EditedMessage>(&EditedMessage::userId) == userId and
|
||||||
column<EditedMessage>(&EditedMessage::dialogId) == dialogId and
|
column<EditedMessage>(&EditedMessage::dialogId) == dialogId and
|
||||||
column<EditedMessage>(&EditedMessage::messageId) == messageId
|
column<EditedMessage>(&EditedMessage::messageId) == messageId
|
||||||
)
|
),
|
||||||
) > 0;
|
limit(1)
|
||||||
|
).empty();
|
||||||
} catch (std::exception &ex) {
|
} catch (std::exception &ex) {
|
||||||
LOG(("Failed to check if message has revisions: %1").arg(ex.what()));
|
LOG(("Failed to check if message has revisions: %1").arg(ex.what()));
|
||||||
return false;
|
return false;
|
||||||
|
@ -251,13 +262,15 @@ std::vector<DeletedMessage> getDeletedMessages(ID userId, ID dialogId, ID topicI
|
||||||
|
|
||||||
bool hasDeletedMessages(ID userId, ID dialogId, ID topicId) {
|
bool hasDeletedMessages(ID userId, ID dialogId, ID topicId) {
|
||||||
try {
|
try {
|
||||||
return storage.count<DeletedMessage>(
|
return !storage.select(
|
||||||
|
columns(column<DeletedMessage>(&DeletedMessage::dialogId)),
|
||||||
where(
|
where(
|
||||||
column<DeletedMessage>(&DeletedMessage::userId) == userId and
|
column<DeletedMessage>(&DeletedMessage::userId) == userId and
|
||||||
column<DeletedMessage>(&DeletedMessage::dialogId) == dialogId and
|
column<DeletedMessage>(&DeletedMessage::dialogId) == dialogId and
|
||||||
(column<DeletedMessage>(&DeletedMessage::topicId) == topicId or topicId == 0)
|
(column<DeletedMessage>(&DeletedMessage::topicId) == topicId or topicId == 0)
|
||||||
)
|
),
|
||||||
) > 0;
|
limit(1)
|
||||||
|
).empty();
|
||||||
} catch (std::exception &ex) {
|
} catch (std::exception &ex) {
|
||||||
LOG(("Failed to check if dialog has deleted message: %1").arg(ex.what()));
|
LOG(("Failed to check if dialog has deleted message: %1").arg(ex.what()));
|
||||||
return false;
|
return false;
|
||||||
|
|
Loading…
Add table
Reference in a new issue