query/include/matador/sql/executor.hpp

32 lines
949 B
C++

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