31#ifndef MYSQLX_COMMON_OP_IF_H
32#define MYSQLX_COMMON_OP_IF_H
45#include "../common_constants.h"
56#define LOCK_MODE(X,N) X = N,
59 LOCK_MODE_LIST(LOCK_MODE)
62#define LOCK_CONTENTION(X,N) X = N,
63enum class Lock_contention
65 LOCK_CONTENTION_LIST(LOCK_CONTENTION)
99 virtual Result_init& execute() = 0;
101 virtual Executable_if *clone()
const = 0;
103 virtual ~Executable_if() NOEXCEPT {}
119struct Bind_if :
public Executable_if
121 using string = std::string;
125 virtual void add_param(
const string&,
const Value&) = 0;
129 virtual void add_param(Value) = 0;
131 virtual void clear_params() = 0;
135struct Limit_if :
public Bind_if
137 virtual void set_offset(
unsigned) = 0;
138 virtual void clear_offset() = 0;
140 virtual void set_limit(
unsigned) = 0;
141 virtual void clear_limit() = 0;
145struct Sort_if :
public Limit_if
147 using string = std::string;
148 enum direction_t { ASC, DESC };
150 virtual void add_sort(
const string &
expr, direction_t dir) = 0;
151 virtual void add_sort(
const string&) = 0;
152 virtual void clear_sort() = 0;
156struct Having_if :
public Sort_if
158 using string = std::string;
160 virtual void set_having(
const string&) = 0;
161 virtual void clear_having() = 0;
165struct Group_by_if :
public Having_if
167 using string = std::string;
169 virtual void add_group_by(
const string&) = 0;
170 virtual void clear_group_by() = 0;
174struct Proj_if :
public Group_by_if
176 using string = std::string;
183 virtual void add_proj(
const string&) = 0;
190 virtual void set_proj(
const string&) = 0;
192 virtual void clear_proj() = 0;
197struct Select_if :
public Base
199 using string = std::string;
203 virtual void set_where(
const string&) = 0;
207 virtual void set_lock_mode(Lock_mode, Lock_contention) = 0;
208 virtual void clear_lock_mode() = 0;
215struct Collection_find_if :
public Select_if<Proj_if>
223struct Collection_add_if :
public Executable_if
230 virtual void add_json(
const std::string&) = 0;
231 virtual void clear_docs() = 0;
235struct Collection_remove_if :
public Select_if<Sort_if>
246struct Collection_modify_if :
public Select_if<Sort_if>
248 using string = std::string;
260 virtual void add_operation(Operation,
const string&,
const Value&) = 0;
261 virtual void add_operation(Operation,
const string&) = 0;
262 virtual void clear_modifications() = 0;
274template <
class Row_impl>
275struct Table_insert_if :
public Executable_if
277 using string = std::string;
285 virtual void add_column(
const string&) = 0;
286 virtual void clear_columns() = 0;
295 virtual void add_row(
const Row_impl&) = 0;
296 virtual void clear_rows() = 0;
308struct Table_select_if :
public Select_if<Proj_if>
322struct Table_remove_if :
public Select_if<Sort_if>
334struct Table_update_if :
public Table_remove_if
336 using string = std::string;
338 virtual void add_set(
const string&,
const Value&) = 0;
339 virtual void clear_modifications() = 0;
internal::Expression expr(std::string &&e)
Function which indicates that a given string should be treated as expression.
Definition: document.h:639