#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 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; template query_result fetch(const std::string &sql) { return query_result(connection_->execute(sql)); } query_result fetch(const std::string &sql); std::pair execute(const std::string &sql); private: connection_info connection_info_; bool is_open_{false}; std::unique_ptr connection_; }; } #endif //QUERY_CONNECTION_HPP