diff options
Diffstat (limited to 'bot/src/config.hpp')
| -rw-r--r-- | bot/src/config.hpp | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/bot/src/config.hpp b/bot/src/config.hpp new file mode 100644 index 0000000..5c437d6 --- /dev/null +++ b/bot/src/config.hpp @@ -0,0 +1,54 @@ +#pragma once + +#include <optional> +#include <string> + +#define GET_DATABASE_CONNECTION_URL(c) \ + "dbname = " + c.database.name + " user = " + c.database.user + \ + " password = " + c.database.password + " host = " + c.database.host + \ + " port = " + c.database.port + +#define GET_DATABASE_CONNECTION_URL_POINTER(c) \ + "dbname = " + c->database.name + " user = " + c->database.user + \ + " password = " + c->database.password + " host = " + c->database.host + \ + " port = " + c->database.port + +namespace bot { + struct DatabaseConfiguration { + std::string name; + std::string user; + std::string password; + std::string host; + std::string port; + }; + + struct TwitchCredentialsConfiguration { + std::string client_id; + std::string token; + }; + + struct CommandConfiguration { + bool join_allowed = true; + bool join_allow_from_other_chats = false; + }; + + struct OwnerConfiguration { + std::optional<std::string> name = std::nullopt; + std::optional<int> id = std::nullopt; + }; + + struct UrlConfiguration { + std::optional<std::string> help = std::nullopt; + }; + + struct Configuration { + TwitchCredentialsConfiguration twitch_credentials; + DatabaseConfiguration database; + CommandConfiguration commands; + OwnerConfiguration owner; + UrlConfiguration url; + }; + + std::optional<Configuration> parse_configuration_from_file( + const std::string &file_path); +} |
