1
0
Fork 0
mirror of https://gitlab.com/niansa/dpplogger.git synced 2025-03-06 20:48:29 +01:00

Implemented bulk message deletion

This commit is contained in:
niansa 2023-01-08 22:21:42 +01:00
parent 6e9afab45c
commit 108853c190

View file

@ -275,8 +275,8 @@ protected:
<< data["id"].asString() << std::to_string(time(nullptr)) << is_initial << data["name"].asString()
<< data["owner_id"].asString() << !is_deleted;
}
void insertGuildDelete(const Json::Value& data) {
auto cached_data = cache.fetch(data["id"]);
void insertGuildDelete(Discord::Snowflake id) {
auto cached_data = cache.fetch(id);
insertGuildUpdate(cached_data, false, true);
}
@ -372,6 +372,7 @@ protected:
" VALUES (?, ?, ?, ?, ?, ? );"
<< data["id"].asString() << type << data["channel_id"].asString() << data["author"]["id"].asString()
<< (type==19?data["referenced_message"]["id"].asString():std::optional<std::string>()) << std::to_string(time(nullptr));
if (has_content) insertMessageContent(data, false);
} else {
db << "UPDATE messages "
"SET is_edited = 1, update_timestamp = ? "
@ -380,11 +381,11 @@ protected:
if (has_content) insertMessageContent(data, false);
}
}
void insertMessageDelete(const Json::Value& data) {
void insertMessageDelete(const std::string& id) {
db << "UPDATE messages "
"SET is_deleted = 1, deletion_timestamp = ? "
"WHERE id = ?;"
<< std::to_string(time(nullptr)) << data["id"].asString();
<< std::to_string(time(nullptr)) << id;
}
/*
@ -397,8 +398,8 @@ protected:
<< std::to_string(time(nullptr)) << is_initial << data["type"].asInt() << GetJSONAsOptionalString(data["name"])
<< GetJSONAsOptionalString(data["topic"]) << is_deleted;
}
void insertChannelDelete(const Json::Value& data) {
auto cached_data = cache.fetch(data["id"]);
void insertChannelDelete(Discord::Snowflake id) {
auto cached_data = cache.fetch(id);
insertChannelUpdate(cached_data, false, true);
}
@ -418,14 +419,18 @@ protected:
insertGuildUpdate(data, false);
cache.store(std::move(data));
} else if (intent == "GUILD_DELETE") [[unlikely]] {
insertGuildDelete(data);
insertGuildDelete(data["id"]);
}
else if (intent == "MESSAGE_CREATE") [[likely]] {
processMessage(std::move(data));
} else if (intent == "MESSAGE_UPDATE") [[likely]] {
insertMessageUpdate(data, false);
} else if (intent == "MESSAGE_DELETE") {
insertMessageDelete(data);
insertMessageDelete(data["id"].asString());
} else if (intent == "MESSAGE_DELETE_BULK") {
for (const auto& id : data["ids"]) {
insertMessageDelete(id.asString());
}
}
else if (intent == "CHANNEL_CREATE") [[unlikely]] {
insertChannelUpdate(data, true);
@ -434,7 +439,7 @@ protected:
insertChannelUpdate(data, false);
cache.store(std::move(data));
} else if (intent == "CHANNEL_DELETE") [[unlikely]] {
insertChannelDelete(data);
insertChannelDelete(data["id"]);
}
else if (intent == "GUILD_MEMBER_ADD" || intent == "GUILD_MEMBER_UDATE") [[unlikely]] {
auto guild_id = std::move(data["guild_id"]);