43 lines
1.2 KiB
C++
43 lines
1.2 KiB
C++
#ifndef STATEMENT_PROXY_HPP
|
|
#define STATEMENT_PROXY_HPP
|
|
|
|
#include "matador/sql/interface/statement_impl.hpp"
|
|
#include "matador/sql/interface/parameter_binder.hpp"
|
|
|
|
namespace matador::sql {
|
|
class statement_proxy {
|
|
protected:
|
|
explicit statement_proxy(std::unique_ptr<statement_impl>&& stmt);
|
|
|
|
public:
|
|
virtual ~statement_proxy() = default;
|
|
|
|
virtual utils::result<size_t, utils::error> execute(parameter_binder& bindings) = 0;
|
|
virtual utils::result<std::unique_ptr<query_result_impl>, utils::error> fetch(parameter_binder& bindings) = 0;
|
|
|
|
template<class Type>
|
|
void bind(const Type &obj, parameter_binder& bindings) {
|
|
statement_->bind_object(obj, bindings);
|
|
}
|
|
template<typename Type>
|
|
void bind(size_t pos, Type &value, parameter_binder& bindings) {
|
|
statement_->bind(pos, value, bindings);
|
|
}
|
|
void bind(size_t pos, const char *value, size_t size, parameter_binder& bindings) const;
|
|
void bind(size_t pos, std::string &val, size_t size, parameter_binder& bindings) const;
|
|
|
|
void reset() const;
|
|
|
|
[[nodiscard]] std::string sql() const;
|
|
|
|
[[nodiscard]] std::unique_ptr<utils::attribute_writer> create_binder() const;
|
|
|
|
protected:
|
|
std::unique_ptr<statement_impl> statement_;
|
|
};
|
|
|
|
|
|
}
|
|
|
|
#endif //STATEMENT_PROXY_HPP
|