MySQL 9.5.0
Source Code Documentation
mrs::database::FilterObjectGenerator Class Reference

#include <filter_object_generator.h>

Public Types

enum  Clear { kWhere = 1 , kOrder = 2 , kAsof = 4 , kAll = 7 }
 
using Document = rapidjson::Document
 
using Object = Document::ConstObject
 
using Value = const Document::ValueType
 

Public Member Functions

 FilterObjectGenerator (std::shared_ptr< database::entry::Object > object={}, bool joins_allowed=false, uint64_t wait_timeout=0, bool use_wait_in_where=true)
 
void reconfigure (uint64_t wait_timeout=0, bool use_wait_in_where=true)
 
void parse (const std::string &filter_query)
 
mysqlrouter::sqlstring get_result () const
 
mysqlrouter::sqlstring get_asof () const
 
bool has_where (bool filter_only=true) const
 
bool has_order () const
 
bool has_asof () const
 
void reset (const Clear clear=Clear::kAll)
 

Private Member Functions

void parse (const Document &doc)
 
std::optional< mysqlrouter::sqlstringparse_simple_operator_object (const std::string_view &column_name, Value *value)
 
std::optional< mysqlrouter::sqlstringparse_complex_operator_object (const std::string_view &column_name, Value *value, const std::string_view &complex_key)
 
std::optional< mysqlrouter::sqlstringparse_complex_value (const std::string_view &column_name, Value *value)
 
std::optional< mysqlrouter::sqlstringparse_complex_values (const std::string_view &column_name, Value *value, const std::string_view &complex_key)
 
std::optional< mysqlrouter::sqlstringparse_column_object (const std::string_view &column_name, Value *value)
 
std::optional< mysqlrouter::sqlstringparse_direct_value (const std::string_view &column_name, Value *value)
 
std::optional< mysqlrouter::sqlstringparse_match (Value *value)
 
void parse_orderby_asof_wmember (Object object)
 
void parse_order (Object object)
 
void parse_asof (Value *value)
 
bool parse_wmember (const std::string_view &name, Value *value)
 
std::pair< std::shared_ptr< entry::Table >, std::shared_ptr< entry::Column > > resolve_field (const std::string_view &name)
 
mysqlrouter::sqlstring resolve_field_name (const std::shared_ptr< entry::Table > &table, const std::shared_ptr< entry::Column > &dfield, const std::string_view &name, bool for_sorting) const
 

Private Attributes

std::shared_ptr< database::entry::Object > object_metadata_
 
bool joins_allowed_ {false}
 
bool empty_ {true}
 
mysqlrouter::sqlstring where_
 
std::list< std::string > argument_
 
mysqlrouter::sqlstring order_
 
mysqlrouter::sqlstring asof_gtid_ {}
 
uint64_t wait_timeout_ {0}
 
bool use_wait_in_where_ {true}
 

Member Typedef Documentation

◆ Document

◆ Object

using mrs::database::FilterObjectGenerator::Object = Document::ConstObject

◆ Value

using mrs::database::FilterObjectGenerator::Value = const Document::ValueType

Member Enumeration Documentation

◆ Clear

Enumerator
kWhere 
kOrder 
kAsof 
kAll 

Constructor & Destructor Documentation

◆ FilterObjectGenerator()

mrs::database::FilterObjectGenerator::FilterObjectGenerator ( std::shared_ptr< database::entry::Object >  object = {},
bool  joins_allowed = false,
uint64_t  wait_timeout = 0,
bool  use_wait_in_where = true 
)

Member Function Documentation

◆ get_asof()

mysqlrouter::sqlstring mrs::database::FilterObjectGenerator::get_asof ( ) const

◆ get_result()

mysqlrouter::sqlstring mrs::database::FilterObjectGenerator::get_result ( ) const

◆ has_asof()

bool mrs::database::FilterObjectGenerator::has_asof ( ) const

◆ has_order()

bool mrs::database::FilterObjectGenerator::has_order ( ) const

◆ has_where()

bool mrs::database::FilterObjectGenerator::has_where ( bool  filter_only = true) const

◆ parse() [1/2]

void mrs::database::FilterObjectGenerator::parse ( const Document doc)
private

◆ parse() [2/2]

void mrs::database::FilterObjectGenerator::parse ( const std::string &  filter_query)

◆ parse_asof()

void mrs::database::FilterObjectGenerator::parse_asof ( Value value)
private

◆ parse_column_object()

std::optional< mysqlrouter::sqlstring > mrs::database::FilterObjectGenerator::parse_column_object ( const std::string_view &  column_name,
Value value 
)
private

◆ parse_complex_operator_object()

std::optional< mysqlrouter::sqlstring > mrs::database::FilterObjectGenerator::parse_complex_operator_object ( const std::string_view &  column_name,
Value value,
const std::string_view &  complex_key 
)
private

◆ parse_complex_value()

std::optional< mysqlrouter::sqlstring > mrs::database::FilterObjectGenerator::parse_complex_value ( const std::string_view &  column_name,
Value value 
)
private

◆ parse_complex_values()

std::optional< mysqlrouter::sqlstring > mrs::database::FilterObjectGenerator::parse_complex_values ( const std::string_view &  column_name,
Value value,
const std::string_view &  complex_key 
)
private

◆ parse_direct_value()

std::optional< mysqlrouter::sqlstring > mrs::database::FilterObjectGenerator::parse_direct_value ( const std::string_view &  column_name,
Value value 
)
private

◆ parse_match()

std::optional< mysqlrouter::sqlstring > mrs::database::FilterObjectGenerator::parse_match ( Value value)
private

◆ parse_order()

void mrs::database::FilterObjectGenerator::parse_order ( Object  object)
private

◆ parse_orderby_asof_wmember()

void mrs::database::FilterObjectGenerator::parse_orderby_asof_wmember ( Object  object)
private

◆ parse_simple_operator_object()

std::optional< mysqlrouter::sqlstring > mrs::database::FilterObjectGenerator::parse_simple_operator_object ( const std::string_view &  column_name,
Value value 
)
private

◆ parse_wmember()

bool mrs::database::FilterObjectGenerator::parse_wmember ( const std::string_view &  name,
Value value 
)
private

◆ reconfigure()

void mrs::database::FilterObjectGenerator::reconfigure ( uint64_t  wait_timeout = 0,
bool  use_wait_in_where = true 
)

◆ reset()

void mrs::database::FilterObjectGenerator::reset ( const Clear  clear = Clear::kAll)

◆ resolve_field()

std::pair< std::shared_ptr< entry::Table >, std::shared_ptr< entry::Column > > mrs::database::FilterObjectGenerator::resolve_field ( const std::string_view &  name)
private

◆ resolve_field_name()

mysqlrouter::sqlstring mrs::database::FilterObjectGenerator::resolve_field_name ( const std::shared_ptr< entry::Table > &  table,
const std::shared_ptr< entry::Column > &  dfield,
const std::string_view &  name,
bool  for_sorting 
) const
private

Member Data Documentation

◆ argument_

std::list<std::string> mrs::database::FilterObjectGenerator::argument_
private

◆ asof_gtid_

mysqlrouter::sqlstring mrs::database::FilterObjectGenerator::asof_gtid_ {}
private

◆ empty_

bool mrs::database::FilterObjectGenerator::empty_ {true}
private

◆ joins_allowed_

bool mrs::database::FilterObjectGenerator::joins_allowed_ {false}
private

◆ object_metadata_

std::shared_ptr<database::entry::Object> mrs::database::FilterObjectGenerator::object_metadata_
private

◆ order_

mysqlrouter::sqlstring mrs::database::FilterObjectGenerator::order_
private

◆ use_wait_in_where_

bool mrs::database::FilterObjectGenerator::use_wait_in_where_ {true}
private

◆ wait_timeout_

uint64_t mrs::database::FilterObjectGenerator::wait_timeout_ {0}
private

◆ where_

mysqlrouter::sqlstring mrs::database::FilterObjectGenerator::where_
private

The documentation for this class was generated from the following files: