diff options
| author | ilotterytea <iltsu@alright.party> | 2024-04-30 01:16:41 +0500 |
|---|---|---|
| committer | ilotterytea <iltsu@alright.party> | 2024-04-30 01:16:41 +0500 |
| commit | 2064d219e19550cd885bee103a06e3f1cb7bc8e2 (patch) | |
| tree | 51265bee92ae413322bc2972204157ab5ad05aaf | |
| parent | d6e04fc50423601e33cbf73baf67a4e48c9f8787 (diff) | |
feat: create a new db connection for each message and pass work to it
| -rw-r--r-- | src/handlers.cpp | 4 | ||||
| -rw-r--r-- | src/handlers.hpp | 4 | ||||
| -rw-r--r-- | src/main.cpp | 14 |
3 files changed, 17 insertions, 5 deletions
diff --git a/src/handlers.cpp b/src/handlers.cpp index b483abd..bcf3245 100644 --- a/src/handlers.cpp +++ b/src/handlers.cpp @@ -1,6 +1,7 @@ #include "handlers.hpp" #include <optional> +#include <pqxx/pqxx> #include <variant> #include <vector> @@ -14,7 +15,8 @@ namespace bot::handlers { void handle_private_message( const InstanceBundle &bundle, const command::CommandLoader &command_loader, - const irc::Message<irc::MessageType::Privmsg> &message) { + const irc::Message<irc::MessageType::Privmsg> &message, + const pqxx::work &work) { std::optional<command::Request> request = command::generate_request(command_loader, message); diff --git a/src/handlers.hpp b/src/handlers.hpp index ed74551..33b57b2 100644 --- a/src/handlers.hpp +++ b/src/handlers.hpp @@ -3,10 +3,12 @@ #include "bundle.hpp" #include "commands/command.hpp" #include "irc/message.hpp" +#include "pqxx/pqxx" namespace bot::handlers { void handle_private_message( const InstanceBundle &bundle, const command::CommandLoader &command_loader, - const irc::Message<irc::MessageType::Privmsg> &message); + const irc::Message<irc::MessageType::Privmsg> &message, + const pqxx::work &work); } diff --git a/src/main.cpp b/src/main.cpp index c7e8e2f..67cf3a5 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -56,10 +56,18 @@ int main(int argc, char *argv[]) { conn.close(); client.on<bot::irc::MessageType::Privmsg>( - [&client, &command_loader, &localization]( - const bot::irc::Message<bot::irc::MessageType::Privmsg> &message) { + [&client, &command_loader, &localization, + &cfg](const bot::irc::Message<bot::irc::MessageType::Privmsg> &message) { bot::InstanceBundle bundle{client, localization}; - bot::handlers::handle_private_message(bundle, command_loader, message); + + pqxx::connection conn(GET_DATABASE_CONNECTION_URL(cfg)); + pqxx::work work(conn); + + bot::handlers::handle_private_message(bundle, command_loader, message, + work); + + work.commit(); + conn.close(); }); client.run(); |
