#ifndef QUERY_CONNECTION_IMPL_HPP #define QUERY_CONNECTION_IMPL_HPP #include "matador/sql/connection_info.hpp" #include "matador/sql/query_result_impl.hpp" #include "matador/sql/query_context.hpp" #include "matador/sql/record.hpp" #include "matador/sql/statement_impl.hpp" #include namespace matador::sql { class query_result_impl; class connection_impl { public: virtual ~connection_impl() = default; virtual void open() = 0; virtual void close() = 0; virtual bool is_open() = 0; virtual size_t execute(const std::string &stmt) = 0; virtual std::unique_ptr fetch(const std::string &stmt) = 0; virtual std::unique_ptr prepare(query_context context) = 0; virtual record describe(const std::string &table) = 0; virtual bool exists(const std::string &schema_name, const std::string &table_name) = 0; protected: explicit connection_impl(const connection_info &info); [[nodiscard]] const connection_info &info() const; private: const connection_info & info_; }; } #endif //QUERY_CONNECTION_IMPL_HPP