query/include/matador/sql/connection_impl.hpp

43 lines
1.0 KiB
C++

#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 <memory>
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<query_result_impl> fetch(const std::string &stmt) = 0;
virtual std::unique_ptr<statement_impl> 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