AnCH Framework 0.1
Another C++ Hack Framework
 
Loading...
Searching...
No Matches
anch::sql::ClausesBuilder Class Reference

SQL clauses builder. More...

#include <clausesBuilder.hpp>

+ Collaboration diagram for anch::sql::ClausesBuilder:

Public Member Functions

 ClausesBuilder (const ClausesBuilder &other)
 
virtual ~ClausesBuilder ()
 
ClausesBuilderfield (const std::string &column)
 
ClausesBuilderNOT (const std::string &clauses)
 
ClausesBuilderisNull ()
 
ClausesBuilderisNotNull ()
 
ClausesBuildernotEquals ()
 
ClausesBuilderequals ()
 
ClausesBuildernotExists (const anch::sql::SelectBuilder &query)
 
ClausesBuilderexists (const anch::sql::SelectBuilder &query)
 
template<typename T>
ClausesBuilderin (const std::vector< T > &values)
 
template<typename T>
ClausesBuildernotIn (const std::vector< T > &values)
 
ClausesBuilderin (const anch::sql::SQLQuery &query)
 
ClausesBuildernotIn (const anch::sql::SQLQuery &query)
 
ClausesBuilderin (const anch::sql::SelectBuilder &query)
 
ClausesBuildernotIn (const anch::sql::SelectBuilder &query)
 
ClausesBuildergreater ()
 
ClausesBuildergreaterEquals ()
 
ClausesBuilderlesser ()
 
ClausesBuilderlesserEquals ()
 
ClausesBuilderlike ()
 
ClausesBuildernotLike ()
 
ClausesBuilderbetween ()
 
ClausesBuildernotBetween ()
 
ClausesBuilderAND ()
 
ClausesBuilderOR ()
 
ClausesBuilderAND (anch::sql::ClausesProvider clauses)
 
template<typename T>
ClausesBuilderAND (anch::sql::ClauseMaker clause, T &value, anch::sql::ValueChecker< T > checker=anch::sql::isValidValue< T >)
 
template<typename T>
ClausesBuilderAND (const std::string &column, anch::sql::ClauseMaker clause, T &value, ValueChecker< T > checker=anch::sql::isValidValue< T >)
 
template<typename T>
ClausesBuilderAND (const std::string &column, ClauseMaker clause, T &value1, T &value2, ValueChecker< T > checker=anch::sql::isValidValue< T >)
 
template<typename T>
ClausesBuilderOR (ClauseMaker clause, T &value, ValueChecker< T > checker=anch::sql::isValidValue< T >)
 
template<typename T>
ClausesBuilderOR (const std::string &column, ClauseMaker clause, T &value, ValueChecker< T > checker=anch::sql::isValidValue< T >)
 
template<typename T>
ClausesBuilderOR (const std::string &column, ClauseMaker clause, T &value1, T &value2, ValueChecker< T > checker=anch::sql::isValidValue< T >)
 
ClausesBuilderOR (anch::sql::ClausesProvider clauses)
 
ClausesBuilderAND (const ClausesBuilder &other)
 
ClausesBuilderOR (const ClausesBuilder &other)
 
ClausesBuilderoperator|| (const ClausesBuilder &other)
 

Friends

ClausesBuilder anch::sql::clauses ()
 

Detailed Description

SQL clauses builder.

This class should be instantiated through utility functions.

Since
0.1
Author
Vincent Lachenal

Constructor & Destructor Documentation

◆ ClausesBuilder()

anch::sql::ClausesBuilder::ClausesBuilder ( const ClausesBuilder & other)

ClausesBuilder copy constructor

Parameters
otherthe ClausesBuilder to copy

◆ ~ClausesBuilder()

virtual anch::sql::ClausesBuilder::~ClausesBuilder ( )
virtual

ClausesBuilder constructor.
This constructor will try to add a first clause if value is valid. Value will be validated with SQL::isValidValue function.
This constructor can be used to add 'EXISTS' clause.

Template Parameters
Tthe value type
Parameters
clausethe clause maker
valuethe value
checkthe value checker to use

ClausesBuilder constructor.
This constructor will try to add a first clause if value is valid. Value will be validated with SQL::isValidValue function.
This constructor can be used to add 'EXISTS' clause.

Template Parameters
Tthe value type
Parameters
clausethe clause maker
valuethe value

ClausesBuilder constructor.
This constructor will try to add a first clause if value is valid. Value will be validated with SQL::isValidValue function.
This constructor can be used to add 'EXISTS' clause.

Template Parameters
Tthe value type
Parameters
clausethe clause maker
valuethe value
checkthe value checker to use

ClausesBuilder destructor

Member Function Documentation

◆ AND() [1/6]

ClausesBuilder & anch::sql::ClausesBuilder::AND ( )

Add AND to SQL query

Returns
this

◆ AND() [2/6]

template<typename T>
ClausesBuilder & anch::sql::ClausesBuilder::AND ( anch::sql::ClauseMaker clause,
T & value,
anch::sql::ValueChecker< T > checker = anch::sql::isValidValue<T> )

Add AND clause if value is valid

Template Parameters
Tthe value type
Parameters
clausethe clause maker
valuethe value
checkerthe value checker to use. Default: anch::sql::isValidValue<T>
Returns
this

◆ AND() [3/6]

ClausesBuilder & anch::sql::ClausesBuilder::AND ( anch::sql::ClausesProvider clauses)

Add AND other clauses if clauses are not null or empty.

Parameters
clausesthe clauses to add
Returns
this
+ Here is the call graph for this function:

◆ AND() [4/6]

ClausesBuilder & anch::sql::ClausesBuilder::AND ( const ClausesBuilder & other)

Add clauses into parenthesis with AND

Parameters
otherthe clauses to add
Returns
this

◆ AND() [5/6]

template<typename T>
ClausesBuilder & anch::sql::ClausesBuilder::AND ( const std::string & column,
anch::sql::ClauseMaker clause,
T & value,
ValueChecker< T > checker = anch::sql::isValidValue<T> )

Add AND clause if value is valid

Template Parameters
Tthe value type
Parameters
columnthe column
clausethe clause maker
valuethe value
checkerthe value checker to use. Default: anch::sql::isValidValue<T>
Returns
this

◆ AND() [6/6]

template<typename T>
ClausesBuilder & anch::sql::ClausesBuilder::AND ( const std::string & column,
ClauseMaker clause,
T & value1,
T & value2,
ValueChecker< T > checker = anch::sql::isValidValue<T> )

Add AND clause if value is valid

Template Parameters
Tthe value type
Parameters
columnthe column
clausethe clause maker
value1the first value
value2the second value
checkerthe value checker to use. Default: anch::sql::isValidValue<T>
Returns
this

◆ between()

ClausesBuilder & anch::sql::ClausesBuilder::between ( )

Add BETWEEN clause

Returns
this

◆ equals()

ClausesBuilder & anch::sql::ClausesBuilder::equals ( )

Add equals clause with = operator

Returns
this

◆ exists()

ClausesBuilder & anch::sql::ClausesBuilder::exists ( const anch::sql::SelectBuilder & query)

Add EXISTS in subquery clause

Parameters
querythe select query
Returns
this

◆ field()

ClausesBuilder & anch::sql::ClausesBuilder::field ( const std::string & column)

Add field to clause

Parameters
columnthe column
Returns
this

◆ greater()

ClausesBuilder & anch::sql::ClausesBuilder::greater ( )

Add greater clause with > operator

Returns
this

◆ greaterEquals()

ClausesBuilder & anch::sql::ClausesBuilder::greaterEquals ( )

Add greater or equals clause with >= operator

Returns
this

◆ in() [1/3]

ClausesBuilder & anch::sql::ClausesBuilder::in ( const anch::sql::SelectBuilder & query)

Add IN subquery clause.

Parameters
querythe subquery
Returns
this

◆ in() [2/3]

ClausesBuilder & anch::sql::ClausesBuilder::in ( const anch::sql::SQLQuery & query)

Add IN subquery clause.

Parameters
querythe subquery
Returns
this

◆ in() [3/3]

template<typename T>
ClausesBuilder & anch::sql::ClausesBuilder::in ( const std::vector< T > & values)

Add IN clause.
Due to many database engine limitation about the maximum number of prepared statement per connection, IN operator will never be treated with place holder prepared statement values.
You can format text values with SQL utility methods.

Template Parameters
Tthe values' type
Parameters
valuesthe values
Returns
this

◆ isNotNull()

ClausesBuilder & anch::sql::ClausesBuilder::isNotNull ( )

Add IS NOT NULL clause

Returns
this

◆ isNull()

ClausesBuilder & anch::sql::ClausesBuilder::isNull ( )

Add IS NULL clause

Returns
this

◆ lesser()

ClausesBuilder & anch::sql::ClausesBuilder::lesser ( )

Add lesser clause with < operator

Returns
this

◆ lesserEquals()

ClausesBuilder & anch::sql::ClausesBuilder::lesserEquals ( )

Add lesser or equals clause with <= operator

Returns
this

◆ like()

ClausesBuilder & anch::sql::ClausesBuilder::like ( )

Add LIKE clause

Returns
this

◆ NOT()

ClausesBuilder & anch::sql::ClausesBuilder::NOT ( const std::string & clauses)

Add NOT command

Parameters
clausesthe clauses to negate
Returns
this

◆ notBetween()

ClausesBuilder & anch::sql::ClausesBuilder::notBetween ( )

Add NOT BETWEEN clause

Returns
this

◆ notEquals()

ClausesBuilder & anch::sql::ClausesBuilder::notEquals ( )

Add not equals clause with <> operator

Returns
this

◆ notExists()

ClausesBuilder & anch::sql::ClausesBuilder::notExists ( const anch::sql::SelectBuilder & query)

Add NOT EXISTS in subquery clause

Parameters
querythe select query
Returns
this

◆ notIn() [1/3]

ClausesBuilder & anch::sql::ClausesBuilder::notIn ( const anch::sql::SelectBuilder & query)

Add NOT IN subquery clause.

Parameters
querythe subquery
Returns
this

◆ notIn() [2/3]

ClausesBuilder & anch::sql::ClausesBuilder::notIn ( const anch::sql::SQLQuery & query)

Add NOT IN subquery clause.

Parameters
querythe subquery
Returns
this

◆ notIn() [3/3]

template<typename T>
ClausesBuilder & anch::sql::ClausesBuilder::notIn ( const std::vector< T > & values)

Add NOT IN clause.
Due to many database engine limitation about the maximum number of prepared statement per connection, NOT IN operator will never be treated with place holder prepared statement values.
You can format text values with SQL utility methods.

Template Parameters
Tthe values' type
Parameters
valuesthe values
Returns
this

◆ notLike()

ClausesBuilder & anch::sql::ClausesBuilder::notLike ( )

Add NOT LIKE clause

Returns
this

◆ operator||()

ClausesBuilder & anch::sql::ClausesBuilder::operator|| ( const ClausesBuilder & other)

Add clauses into parenthesis with OR

Parameters
otherthe clauses to add
Returns
this

◆ OR() [1/6]

ClausesBuilder & anch::sql::ClausesBuilder::OR ( )

Add OR to SQL query

Returns
this

◆ OR() [2/6]

ClausesBuilder & anch::sql::ClausesBuilder::OR ( anch::sql::ClausesProvider clauses)

Add AND} other clauses if clauses are not NULL or empty.

Parameters
clausesthe clauses to add
Returns
this

◆ OR() [3/6]

template<typename T>
ClausesBuilder & anch::sql::ClausesBuilder::OR ( ClauseMaker clause,
T & value,
ValueChecker< T > checker = anch::sql::isValidValue<T> )

Add OR clause if value is valid

Template Parameters
Tthe value type
Parameters
clausethe clause maker
valuethe value
checkerthe value checker to use. Default: anch::sql::isValidValue<T>
Returns
this

◆ OR() [4/6]

ClausesBuilder & anch::sql::ClausesBuilder::OR ( const ClausesBuilder & other)

Add clauses into parenthesis with OR

Parameters
otherthe clauses to add
Returns
this

◆ OR() [5/6]

template<typename T>
ClausesBuilder & anch::sql::ClausesBuilder::OR ( const std::string & column,
ClauseMaker clause,
T & value,
ValueChecker< T > checker = anch::sql::isValidValue<T> )

Add OR clause if value is valid

Template Parameters
Tthe value type
Parameters
columnthe column
clausethe clause maker
valuethe value
checkerthe value checker to use. Default: anch::sql::isValidValue<T>
Returns
this

◆ OR() [6/6]

template<typename T>
ClausesBuilder & anch::sql::ClausesBuilder::OR ( const std::string & column,
ClauseMaker clause,
T & value1,
T & value2,
ValueChecker< T > checker = anch::sql::isValidValue<T> )

Add OR clause if value is valid

Template Parameters
Tthe value type
Parameters
columnthe column
clausethe clause maker
value1the first value
value2the second value
checkerthe value checker to use. Default: anch::sql::isValidValue<T>
Returns
this

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