#ifndef EXECUTOR_HPP #define EXECUTOR_HPP #include "matador/utils/error.hpp" #include "matador/utils/result.hpp" #include namespace matador::sql { struct query_context; class query_result_impl; class statement; class dialect_executor_mixin { public: virtual ~dialect_executor_mixin() = default; [[nodiscard]] virtual const class dialect& dialect() const = 0; }; class prepared_executor : public dialect_executor_mixin { public: [[nodiscard]] virtual utils::result prepare(const query_context &ctx) = 0; }; class executor : public dialect_executor_mixin { public: [[nodiscard]] virtual utils::result execute(const query_context &ctx) const = 0; [[nodiscard]] virtual utils::result, utils::error> fetch(const query_context &ctx) const = 0; [[nodiscard]] virtual std::string str(const query_context &ctx) const = 0; }; } #endif //EXECUTOR_HPP