diff options
author | ouwou <26526779+ouwou@users.noreply.github.com> | 2022-03-04 23:03:09 -0500 |
---|---|---|
committer | ouwou <26526779+ouwou@users.noreply.github.com> | 2022-03-04 23:03:09 -0500 |
commit | af60bceada7e55011f6d5ed2f13fef354ced45ef (patch) | |
tree | 8303bdcff7c4f55a9e13cec85d560770ad94cf50 /src/discord/store.cpp | |
parent | 3583a5d2516f9b71d389ccb95224b21a3dae20a2 (diff) | |
download | abaddon-portaudio-af60bceada7e55011f6d5ed2f13fef354ced45ef.tar.gz abaddon-portaudio-af60bceada7e55011f6d5ed2f13fef354ced45ef.zip |
optimize sql for getting unknown member ids
Diffstat (limited to 'src/discord/store.cpp')
-rw-r--r-- | src/discord/store.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/discord/store.cpp b/src/discord/store.cpp index d96bb1f..8eb3613 100644 --- a/src/discord/store.cpp +++ b/src/discord/store.cpp @@ -576,6 +576,23 @@ std::vector<Snowflake> Store::GetChannelIDsWithParentID(Snowflake channel_id) co return ret; } +std::unordered_set<Snowflake> Store::GetMembersInGuild(Snowflake guild_id) const { + auto &s = m_stmt_get_guild_member_ids; + + s->Bind(1, guild_id); + + std::unordered_set<Snowflake> ret; + while (s->FetchOne()) { + Snowflake x; + s->Get(0, x); + ret.insert(x); + } + + s->Reset(); + + return ret; +} + void Store::AddReaction(const MessageReactionAddObject &data, bool byself) { auto &s = m_stmt_add_reaction; @@ -2134,6 +2151,14 @@ bool Store::CreateStatements() { return false; } + m_stmt_get_guild_member_ids = std::make_unique<Statement>(m_db, R"( + SELECT user_id FROM members WHERE guild_id = ? + )"); + if (!m_stmt_get_guild_member_ids->OK()) { + fprintf(stderr, "failed to prepare get guild member ids statement: %s\n", m_db.ErrStr()); + return false; + } + return true; } |