30 [[nodiscard]]
static auto connect(
const std::string& db_name,
31 const std::string& user,
32 const std::string& password,
33 const std::string& host,
34 const std::string& port) -> bool;
36 [[nodiscard]]
static auto connect(
const std::string& connection_string) -> bool;
47template <
size_t I = 0,
typename... Types>
48constexpr void assignResults(
const pqxx::result& result, std::vector<std::variant<Types...>>& args) {
49 if constexpr (I <
sizeof...(Types)) {
50 args[I] = result.at(0, I).template get<std::variant_alternative_t<I, std::variant<Types...>>>().value();
62template <
typename... Types>
63[[nodiscard(
"You need to check if the Query was executed on the Database!")]]
auto execQuery(
const std::string& query,
64 Types&&... args)
noexcept
71 pqxx::result result = txn.exec_params(query, std::forward<Types>(args)...);
76 }
catch (
const pqxx::broken_connection& e) {
84 }
catch (
const std::exception& e) {
85 std::cerr <<
"Error: " << e.what() <<
"\nInvalid exec for query:\n" << query << std::endl;
97template <
typename... Types>
104 pqxx::result result = txn.exec_params(query, std::forward<Types>(args)...);
110 }
catch (
const pqxx::broken_connection& e) {
114 return {pqxx::row()};
118 }
catch (
const std::exception& e) {
119 std::cerr <<
"Error: " << e.what() <<
"\nInvalid selection for query:\n" << query << std::endl;
131template <
typename... Types>
132[[nodiscard]]
auto execSelectAll(
const std::string& query, Types&&... args)
noexcept -> std::vector<RowDTOAdapter> {
133 static int times = 0;
138 pqxx::result result = txn.exec_params(query, std::forward<Types>(args)...);
143 std::vector<RowDTOAdapter> selection;
144 for (
int i{0}; i < result.size(); ++i) {
145 selection.emplace_back(result[i]);
149 }
catch (
const pqxx::broken_connection& e) {
153 return {pqxx::row()};
157 }
catch (
const std::exception& e) {
158 std::cerr <<
"Error: " << e.what() <<
"\nInvalid selection for query:\n" << query << std::endl;
static auto getConnection() noexcept -> pqxx::connection *
returns the database connection. Reconnects if the Database has no active connection
Definition Database.cpp:108
static auto reconnect() noexcept -> void
reconnects to the database server if the connection was lost
Definition Database.cpp:79
static auto disconnect() noexcept -> void
disconnect from a postgres database
Definition Database.cpp:61
static auto hasConnection() noexcept -> bool
checks if the database has an active connection
Definition Database.cpp:69
static auto connect(const std::string &db_name, const std::string &user, const std::string &password, const std::string &host, const std::string &port) -> bool
connect to a postgres database
Definition Database.cpp:33
Definition RowDTOAdapter.hpp:20
Definition Database.hpp:44
auto execSelect(const std::string &query, Types &&... args) noexcept -> RowDTOAdapter
executes a Select on the database
Definition Database.hpp:98
auto execSelectAll(const std::string &query, Types &&... args) noexcept -> std::vector< RowDTOAdapter >
executes a Select on the database
Definition Database.hpp:132
constexpr void assignResults(const pqxx::result &result, std::vector< std::variant< Types... > > &args)
Definition Database.hpp:48
auto execQuery(const std::string &query, Types &&... args) noexcept -> bool
executes a query on the database
Definition Database.hpp:63