summaryrefslogtreecommitdiff
path: root/src/discord/store.cpp
diff options
context:
space:
mode:
authorouwou <26526779+ouwou@users.noreply.github.com>2023-07-17 21:37:24 -0400
committerouwou <26526779+ouwou@users.noreply.github.com>2023-07-17 21:37:24 -0400
commitd04e101800c451c4963a530b7cf745666105cec4 (patch)
treed73fdf97b00d8f40d8888de762574a424df435eb /src/discord/store.cpp
parent0f3814586e3949d1a7fc15bfc2aff2b99d4975a8 (diff)
parent857e94af3817932b78963873fb5621ae3c4596f7 (diff)
downloadabaddon-portaudio-d04e101800c451c4963a530b7cf745666105cec4.tar.gz
abaddon-portaudio-d04e101800c451c4963a530b7cf745666105cec4.zip
Merge branch 'master' into rnnoise
Diffstat (limited to 'src/discord/store.cpp')
-rw-r--r--src/discord/store.cpp78
1 files changed, 37 insertions, 41 deletions
diff --git a/src/discord/store.cpp b/src/discord/store.cpp
index 41b2069..7ee4d87 100644
--- a/src/discord/store.cpp
+++ b/src/discord/store.cpp
@@ -438,6 +438,7 @@ void Store::SetUser(Snowflake id, const UserData &user) {
s->Bind(7, user.IsMFAEnabled);
s->Bind(8, user.PremiumType);
s->Bind(9, user.PublicFlags);
+ s->Bind(10, user.GlobalName);
if (!s->Insert())
fprintf(stderr, "user insert failed for %" PRIu64 ": %s\n", static_cast<uint64_t>(id), m_db.ErrStr());
@@ -558,8 +559,9 @@ std::vector<Message> Store::GetMessagesBefore(Snowflake channel_id, Snowflake me
for (auto &msg : msgs) {
if (msg.MessageReference.has_value() && msg.MessageReference->MessageID.has_value()) {
auto ref = GetMessage(*msg.MessageReference->MessageID);
- if (ref.has_value())
+ if (ref.has_value()) {
msg.ReferencedMessage = std::make_shared<Message>(std::move(*ref));
+ }
}
}
@@ -1109,6 +1111,7 @@ std::optional<UserData> Store::GetUser(Snowflake id) const {
s->Get(6, r.IsMFAEnabled);
s->Get(7, r.PremiumType);
s->Get(8, r.PublicFlags);
+ s->Get(9, r.GlobalName);
s->Reset();
@@ -1233,7 +1236,8 @@ bool Store::CreateTables() {
system BOOL,
mfa BOOL,
premium INTEGER,
- pubflags INTEGER
+ pubflags INTEGER,
+ global_name TEXT
)
)";
@@ -1797,7 +1801,7 @@ bool Store::CreateStatements() {
m_stmt_set_user = std::make_unique<Statement>(m_db, R"(
REPLACE INTO users VALUES (
- ?, ?, ?, ?, ?, ?, ?, ?, ?
+ ?, ?, ?, ?, ?, ?, ?, ?, ?, ?
)
)");
if (!m_stmt_set_user->OK()) {
@@ -2057,26 +2061,22 @@ bool Store::CreateStatements() {
message_interactions.name,
message_interactions.type,
message_interactions.user_id,
- attachments.id,
- attachments.filename,
- attachments.size,
- attachments.url,
- attachments.proxy,
- attachments.height,
- attachments.width,
- message_references.message
+ message_references.message,
+ message_references.channel,
+ message_references.guild,
+ COUNT(attachments.id)
FROM messages
LEFT OUTER JOIN
message_interactions
ON messages.id = message_interactions.message_id
LEFT OUTER JOIN
- attachments
- ON messages.id = attachments.message
- LEFT OUTER JOIN
message_references
ON messages.id = message_references.id
+ LEFT OUTER JOIN
+ attachments
+ ON messages.id = attachments.message
WHERE channel_id = ? AND pending = 0 AND messages.id < ? ORDER BY id DESC LIMIT ?
- ) ORDER BY id ASC
+ ) WHERE id IS NOT NULL ORDER BY id ASC
)");
if (!m_stmt_get_messages_before->OK()) {
fprintf(stderr, "failed to prepare get messages before statement: %s\n", m_db.ErrStr());
@@ -2084,32 +2084,28 @@ bool Store::CreateStatements() {
}
m_stmt_get_pins = std::make_unique<Statement>(m_db, R"(
- SELECT messages.*,
- message_interactions.interaction_id,
- message_interactions.name,
- message_interactions.type,
- message_interactions.user_id,
- attachments.id,
- attachments.filename,
- attachments.size,
- attachments.url,
- attachments.proxy,
- attachments.height,
- attachments.width,
- message_references.message,
- message_references.channel,
- message_references.guild
- FROM messages
- LEFT OUTER JOIN
- message_interactions
- ON messages.id = message_interactions.message_id
- LEFT OUTER JOIN
- attachments
- ON messages.id = attachments.message
- LEFT OUTER JOIN
- message_references
- ON messages.id = message_references.id
- WHERE channel_id = ? AND pinned = 1 ORDER BY id ASC
+ SELECT * FROM (
+ SELECT messages.*,
+ message_interactions.interaction_id,
+ message_interactions.name,
+ message_interactions.type,
+ message_interactions.user_id,
+ message_references.message,
+ message_references.channel,
+ message_references.guild,
+ COUNT(attachments.id)
+ FROM messages
+ LEFT OUTER JOIN
+ message_interactions
+ ON messages.id = message_interactions.message_id
+ LEFT OUTER JOIN
+ message_references
+ ON messages.id = message_references.id
+ LEFT OUTER JOIN
+ attachments
+ ON messages.id = attachments.message
+ WHERE channel_id = ? AND pinned = 1 ORDER BY id ASC
+ ) WHERE id IS NOT NULL
)");
if (!m_stmt_get_pins->OK()) {
fprintf(stderr, "failed to prepare get pins statement: %s\n", m_db.ErrStr());