#ifndef QUERY_CONNECTION_HPP #define QUERY_CONNECTION_HPP #include "matador/sql/connection_info.hpp" #include "matador/sql/connection_impl.hpp" #include "matador/sql/dialect.hpp" #include "matador/sql/query_result.hpp" #include "matador/sql/record.hpp" #include "matador/utils/logger.hpp" #include namespace matador::sql { class connection_impl; class connection { public: explicit connection(connection_info info); explicit connection(const std::string& dns); connection(const connection &x); connection& operator=(const connection &x); connection(connection &&x) noexcept = default; connection& operator=(connection &&x) noexcept = default; ~connection(); void open(); void close(); [[nodiscard]] bool is_open() const; [[nodiscard]] const connection_info& info() const; [[nodiscard]] record describe(const std::string &table_name) const; [[nodiscard]] bool exists(const std::string &table_name) const; [[nodiscard]] std::unique_ptr fetch(const std::string &sql) const; [[nodiscard]] std::pair execute(const std::string &sql) const; private: connection_info connection_info_; std::unique_ptr connection_; utils::logger logger_; }; } #endif //QUERY_CONNECTION_HPP