relx 0.1.0
A Modern C++23 Type-Safe SQL Query Builder
Loading...
Searching...
No Matches
operators.hpp File Reference
#include "../query/condition.hpp"
#include "../query/date_concepts.hpp"
#include "../query/function.hpp"
#include "../query/meta.hpp"
#include "../query/schema_adapter.hpp"
#include "../query/value.hpp"
#include "../schema/column.hpp"
#include <chrono>
#include <iostream>
#include <optional>
#include <string>
#include <type_traits>
#include <vector>

Go to the source code of this file.

Classes

struct  relx::type_checking::remove_optional< T >
 Helper to extract the underlying type from optional. More...
 
struct  relx::type_checking::remove_optional< std::optional< T > >
 
struct  relx::query::meta::is_specialization< T, Template >
 
struct  relx::query::meta::is_specialization< Template< Args... >, Template >
 

Namespaces

namespace  relx
 relx database connection
 
namespace  relx::type_checking
 Type compatibility utilities for column comparisons.
 
namespace  relx::schema
 
namespace  relx::query
 
namespace  relx::query::meta
 

Concepts

concept  relx::type_checking::StringCompatible
 Check if two types are string-compatible.
 
concept  relx::type_checking::OptionalCompatible
 Check if optional types are compatible with each other or their underlying types.
 
concept  relx::type_checking::TypeCompatible
 Check if column type is compatible with value type.
 

Typedefs

template<typename T >
using relx::type_checking::remove_optional_t = typename remove_optional< T >::type
 

Functions

template<typename TableT , fixed_string Name, typename T , typename... Modifiers, typename ValueType >
auto relx::schema::operator== (const column< TableT, Name, T, Modifiers... > &col, const ValueType &value)
 
template<typename TableT , fixed_string Name, typename T , typename... Modifiers, typename ValueType >
auto relx::schema::operator!= (const column< TableT, Name, T, Modifiers... > &col, const ValueType &value)
 
template<typename TableT , fixed_string Name, typename T , typename... Modifiers, typename ValueType >
auto relx::schema::operator> (const column< TableT, Name, T, Modifiers... > &col, const ValueType &value)
 
template<typename TableT , fixed_string Name, typename T , typename... Modifiers, typename ValueType >
auto relx::schema::operator< (const column< TableT, Name, T, Modifiers... > &col, const ValueType &value)
 
template<typename TableT , fixed_string Name, typename T , typename... Modifiers, typename ValueType >
auto relx::schema::operator>= (const column< TableT, Name, T, Modifiers... > &col, const ValueType &value)
 
template<typename TableT , fixed_string Name, typename T , typename... Modifiers, typename ValueType >
auto relx::schema::operator<= (const column< TableT, Name, T, Modifiers... > &col, const ValueType &value)
 
template<typename TableT1 , fixed_string Name1, typename T1 , typename... Modifiers1, typename TableT2 , fixed_string Name2, typename T2 , typename... Modifiers2>
auto relx::schema::operator== (const column< TableT1, Name1, T1, Modifiers1... > &col1, const column< TableT2, Name2, T2, Modifiers2... > &col2)
 
template<typename TableT1 , fixed_string Name1, typename T1 , typename... Modifiers1, typename TableT2 , fixed_string Name2, typename T2 , typename... Modifiers2>
auto relx::schema::operator!= (const column< TableT1, Name1, T1, Modifiers1... > &col1, const column< TableT2, Name2, T2, Modifiers2... > &col2)
 
template<typename TableT1 , fixed_string Name1, typename T1 , typename... Modifiers1, typename TableT2 , fixed_string Name2, typename T2 , typename... Modifiers2>
auto relx::schema::operator> (const column< TableT1, Name1, T1, Modifiers1... > &col1, const column< TableT2, Name2, T2, Modifiers2... > &col2)
 
template<typename TableT1 , fixed_string Name1, typename T1 , typename... Modifiers1, typename TableT2 , fixed_string Name2, typename T2 , typename... Modifiers2>
auto relx::schema::operator< (const column< TableT1, Name1, T1, Modifiers1... > &col1, const column< TableT2, Name2, T2, Modifiers2... > &col2)
 
template<typename TableT1 , fixed_string Name1, typename T1 , typename... Modifiers1, typename TableT2 , fixed_string Name2, typename T2 , typename... Modifiers2>
auto relx::schema::operator>= (const column< TableT1, Name1, T1, Modifiers1... > &col1, const column< TableT2, Name2, T2, Modifiers2... > &col2)
 
template<typename TableT1 , fixed_string Name1, typename T1 , typename... Modifiers1, typename TableT2 , fixed_string Name2, typename T2 , typename... Modifiers2>
auto relx::schema::operator<= (const column< TableT1, Name1, T1, Modifiers1... > &col1, const column< TableT2, Name2, T2, Modifiers2... > &col2)
 
template<typename TableT , fixed_string Name, typename... Modifiers>
auto relx::schema::operator! (const column< TableT, Name, bool, Modifiers... > &col)
 
template<typename TableT , fixed_string Name, typename... Modifiers, query::SqlExpr Expr>
auto relx::schema::operator&& (const column< TableT, Name, bool, Modifiers... > &col, const Expr &expr)
 
template<query::SqlExpr Expr, typename TableT , fixed_string Name, typename... Modifiers>
auto relx::schema::operator&& (const Expr &expr, const column< TableT, Name, bool, Modifiers... > &col)
 
template<typename TableT , fixed_string Name, typename... Modifiers, query::SqlExpr Expr>
auto relx::schema::operator|| (const column< TableT, Name, bool, Modifiers... > &col, const Expr &expr)
 
template<query::SqlExpr Expr, typename TableT , fixed_string Name, typename... Modifiers>
auto relx::schema::operator|| (const Expr &expr, const column< TableT, Name, bool, Modifiers... > &col)
 
template<typename ValueType , typename TableT , fixed_string Name, typename T , typename... Modifiers>
auto relx::schema::operator== (const ValueType &value, const column< TableT, Name, T, Modifiers... > &col)
 
template<typename ValueType , typename TableT , fixed_string Name, typename T , typename... Modifiers>
auto relx::schema::operator!= (const ValueType &value, const column< TableT, Name, T, Modifiers... > &col)
 
template<typename ValueType , typename TableT , fixed_string Name, typename T , typename... Modifiers>
auto relx::schema::operator> (const ValueType &value, const column< TableT, Name, T, Modifiers... > &col)
 
template<typename ValueType , typename TableT , fixed_string Name, typename T , typename... Modifiers>
auto relx::schema::operator< (const ValueType &value, const column< TableT, Name, T, Modifiers... > &col)
 
template<typename ValueType , typename TableT , fixed_string Name, typename T , typename... Modifiers>
auto relx::schema::operator>= (const ValueType &value, const column< TableT, Name, T, Modifiers... > &col)
 
template<typename ValueType , typename TableT , fixed_string Name, typename T , typename... Modifiers>
auto relx::schema::operator<= (const ValueType &value, const column< TableT, Name, T, Modifiers... > &col)
 
template<typename TableT , fixed_string Name, typename... Modifiers, typename Cond >
requires query::SqlExpr<Cond> || (!std::same_as<Cond, bool>)
auto relx::schema::operator&& (const column< TableT, Name, bool, Modifiers... > &col, const Cond &cond)
 
template<typename TableT , fixed_string Name, typename... Modifiers, typename Cond >
requires query::SqlExpr<Cond> || (!std::same_as<Cond, bool>)
auto relx::schema::operator|| (const column< TableT, Name, bool, Modifiers... > &col, const Cond &cond)
 
template<typename Cond , typename TableT , fixed_string Name, typename... Modifiers>
requires query::SqlExpr<Cond> || (!std::same_as<Cond, bool>)
auto relx::schema::operator&& (const Cond &cond, const column< TableT, Name, bool, Modifiers... > &col)
 
template<typename Cond , typename TableT , fixed_string Name, typename... Modifiers>
requires query::SqlExpr<Cond> || (!std::same_as<Cond, bool>)
auto relx::schema::operator|| (const Cond &cond, const column< TableT, Name, bool, Modifiers... > &col)
 
template<typename TableT , schema::fixed_string Name, typename T , typename... Modifiers, typename ValueT >
auto relx::query::operator== (const schema::column< TableT, Name, T, Modifiers... > &col, const Value< ValueT > &value)
 
template<typename TableT , schema::fixed_string Name, typename T , typename... Modifiers, typename ValueT >
auto relx::query::operator!= (const schema::column< TableT, Name, T, Modifiers... > &col, const Value< ValueT > &value)
 
template<typename TableT , schema::fixed_string Name, typename T , typename... Modifiers, typename ValueT >
auto relx::query::operator> (const schema::column< TableT, Name, T, Modifiers... > &col, const Value< ValueT > &value)
 
template<typename TableT , schema::fixed_string Name, typename T , typename... Modifiers, typename ValueT >
auto relx::query::operator< (const schema::column< TableT, Name, T, Modifiers... > &col, const Value< ValueT > &value)
 
template<typename TableT , schema::fixed_string Name, typename T , typename... Modifiers, typename ValueT >
auto relx::query::operator>= (const schema::column< TableT, Name, T, Modifiers... > &col, const Value< ValueT > &value)
 
template<typename TableT , schema::fixed_string Name, typename T , typename... Modifiers, typename ValueT >
auto relx::query::operator<= (const schema::column< TableT, Name, T, Modifiers... > &col, const Value< ValueT > &value)
 
template<typename TableT , schema::fixed_string Name, typename T , typename... Modifiers, typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> && (!std::is_same_v<LiteralT, bool>) && (!meta::is_specialization_v<std::remove_cvref_t<LiteralT>, Value>)
auto relx::query::operator== (const schema::column< TableT, Name, T, Modifiers... > &col, LiteralT &&literal)
 
template<typename TableT , schema::fixed_string Name, typename T , typename... Modifiers, typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> && (!std::is_same_v<LiteralT, bool>) && (!meta::is_specialization_v<std::remove_cvref_t<LiteralT>, Value>)
auto relx::query::operator!= (const schema::column< TableT, Name, T, Modifiers... > &col, LiteralT &&literal)
 
template<typename TableT , schema::fixed_string Name, typename T , typename... Modifiers, typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> && (!std::is_same_v<LiteralT, bool>) && (!meta::is_specialization_v<std::remove_cvref_t<LiteralT>, Value>)
auto relx::query::operator> (const schema::column< TableT, Name, T, Modifiers... > &col, LiteralT &&literal)
 
template<typename TableT , schema::fixed_string Name, typename T , typename... Modifiers, typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> && (!std::is_same_v<LiteralT, bool>) && (!meta::is_specialization_v<std::remove_cvref_t<LiteralT>, Value>)
auto relx::query::operator< (const schema::column< TableT, Name, T, Modifiers... > &col, LiteralT &&literal)
 
template<typename TableT , schema::fixed_string Name, typename T , typename... Modifiers, typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> && (!std::is_same_v<LiteralT, bool>) && (!meta::is_specialization_v<std::remove_cvref_t<LiteralT>, Value>)
auto relx::query::operator>= (const schema::column< TableT, Name, T, Modifiers... > &col, LiteralT &&literal)
 
template<typename TableT , schema::fixed_string Name, typename T , typename... Modifiers, typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> && (!std::is_same_v<LiteralT, bool>) && (!meta::is_specialization_v<std::remove_cvref_t<LiteralT>, Value>)
auto relx::query::operator<= (const schema::column< TableT, Name, T, Modifiers... > &col, LiteralT &&literal)
 
template<typename LiteralT , typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> && (!std::is_same_v<LiteralT, bool>) && (!meta::is_specialization_v<std::remove_cvref_t<LiteralT>, Value>)
auto relx::query::operator== (LiteralT &&literal, const schema::column< TableT, Name, T, Modifiers... > &col)
 
template<typename LiteralT , typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> && (!std::is_same_v<LiteralT, bool>) && (!meta::is_specialization_v<std::remove_cvref_t<LiteralT>, Value>)
auto relx::query::operator!= (LiteralT &&literal, const schema::column< TableT, Name, T, Modifiers... > &col)
 
template<typename LiteralT , typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> && (!std::is_same_v<LiteralT, bool>) && (!meta::is_specialization_v<std::remove_cvref_t<LiteralT>, Value>)
auto relx::query::operator> (LiteralT &&literal, const schema::column< TableT, Name, T, Modifiers... > &col)
 
template<typename LiteralT , typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> && (!std::is_same_v<LiteralT, bool>) && (!meta::is_specialization_v<std::remove_cvref_t<LiteralT>, Value>)
auto relx::query::operator< (LiteralT &&literal, const schema::column< TableT, Name, T, Modifiers... > &col)
 
template<typename LiteralT , typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> && (!std::is_same_v<LiteralT, bool>) && (!meta::is_specialization_v<std::remove_cvref_t<LiteralT>, Value>)
auto relx::query::operator>= (LiteralT &&literal, const schema::column< TableT, Name, T, Modifiers... > &col)
 
template<typename LiteralT , typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> && (!std::is_same_v<LiteralT, bool>) && (!meta::is_specialization_v<std::remove_cvref_t<LiteralT>, Value>)
auto relx::query::operator<= (LiteralT &&literal, const schema::column< TableT, Name, T, Modifiers... > &col)
 
template<typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
auto relx::query::operator== (const schema::column< TableT, Name, T, Modifiers... > &col, const char *str)
 
template<typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
auto relx::query::operator!= (const schema::column< TableT, Name, T, Modifiers... > &col, const char *str)
 
template<typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
auto relx::query::operator== (const char *str, const schema::column< TableT, Name, T, Modifiers... > &col)
 
template<typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
auto relx::query::operator!= (const char *str, const schema::column< TableT, Name, T, Modifiers... > &col)
 
template<typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
auto relx::query::like (const schema::column< TableT, Name, T, Modifiers... > &col, std::string pattern)
 
template<typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
auto relx::query::is_null (const schema::column< TableT, Name, T, Modifiers... > &col)
 
template<typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
auto relx::query::is_not_null (const schema::column< TableT, Name, T, Modifiers... > &col)
 
template<typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
auto relx::query::between (const schema::column< TableT, Name, T, Modifiers... > &col, std::string lower, std::string upper)
 
template<typename TableT , schema::fixed_string Name, typename T , typename... Modifiers, typename ResultT >
auto relx::query::when (const schema::column< TableT, Name, T, Modifiers... > &condition, const query::Value< ResultT > &result)
 
template<typename CondT , typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
auto relx::query::when (const CondT &condition, const schema::column< TableT, Name, T, Modifiers... > &result)
 
template<typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
auto relx::query::else_ (const schema::column< TableT, Name, T, Modifiers... > &result)
 
template<typename TableT , schema::fixed_string Name, typename T , typename... Modifiers, typename... Args>
auto relx::query::select_expr (const schema::column< TableT, Name, T, Modifiers... > &col, Args &&... args)
 
template<typename Column , typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> && (!std::is_same_v<LiteralT, bool>) && (!meta::is_specialization_v<std::remove_cvref_t<LiteralT>, Value>)
auto relx::query::operator== (const SchemaColumnAdapter< Column > &col, LiteralT &&literal)
 
template<typename Column , typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> && (!std::is_same_v<LiteralT, bool>) && (!meta::is_specialization_v<std::remove_cvref_t<LiteralT>, Value>)
auto relx::query::operator!= (const SchemaColumnAdapter< Column > &col, LiteralT &&literal)
 
template<typename Column , typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> && (!std::is_same_v<LiteralT, bool>) && (!meta::is_specialization_v<std::remove_cvref_t<LiteralT>, Value>)
auto relx::query::operator> (const SchemaColumnAdapter< Column > &col, LiteralT &&literal)
 
template<typename Column , typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> && (!std::is_same_v<LiteralT, bool>) && (!meta::is_specialization_v<std::remove_cvref_t<LiteralT>, Value>)
auto relx::query::operator< (const SchemaColumnAdapter< Column > &col, LiteralT &&literal)
 
template<typename Column , typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> && (!std::is_same_v<LiteralT, bool>) && (!meta::is_specialization_v<std::remove_cvref_t<LiteralT>, Value>)
auto relx::query::operator>= (const SchemaColumnAdapter< Column > &col, LiteralT &&literal)
 
template<typename Column , typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> && (!std::is_same_v<LiteralT, bool>) && (!meta::is_specialization_v<std::remove_cvref_t<LiteralT>, Value>)
auto relx::query::operator<= (const SchemaColumnAdapter< Column > &col, LiteralT &&literal)
 
template<typename LiteralT , typename Column >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> && (!std::is_same_v<LiteralT, bool>) && (!meta::is_specialization_v<std::remove_cvref_t<LiteralT>, Value>)
auto relx::query::operator== (LiteralT &&literal, const SchemaColumnAdapter< Column > &col)
 
template<typename LiteralT , typename Column >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> && (!std::is_same_v<LiteralT, bool>) && (!meta::is_specialization_v<std::remove_cvref_t<LiteralT>, Value>)
auto relx::query::operator!= (LiteralT &&literal, const SchemaColumnAdapter< Column > &col)
 
template<typename LiteralT , typename Column >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> && (!std::is_same_v<LiteralT, bool>) && (!meta::is_specialization_v<std::remove_cvref_t<LiteralT>, Value>)
auto relx::query::operator> (LiteralT &&literal, const SchemaColumnAdapter< Column > &col)
 
template<typename LiteralT , typename Column >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> && (!std::is_same_v<LiteralT, bool>) && (!meta::is_specialization_v<std::remove_cvref_t<LiteralT>, Value>)
auto relx::query::operator< (LiteralT &&literal, const SchemaColumnAdapter< Column > &col)
 
template<typename LiteralT , typename Column >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> && (!std::is_same_v<LiteralT, bool>) && (!meta::is_specialization_v<std::remove_cvref_t<LiteralT>, Value>)
auto relx::query::operator>= (LiteralT &&literal, const SchemaColumnAdapter< Column > &col)
 
template<typename LiteralT , typename Column >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> && (!std::is_same_v<LiteralT, bool>) && (!meta::is_specialization_v<std::remove_cvref_t<LiteralT>, Value>)
auto relx::query::operator<= (LiteralT &&literal, const SchemaColumnAdapter< Column > &col)
 
template<typename Column >
auto relx::query::operator== (const SchemaColumnAdapter< Column > &col, const char *str)
 
template<typename Column >
auto relx::query::operator!= (const SchemaColumnAdapter< Column > &col, const char *str)
 
template<typename Column >
auto relx::query::operator== (const char *str, const SchemaColumnAdapter< Column > &col)
 
template<typename Column >
auto relx::query::operator!= (const char *str, const SchemaColumnAdapter< Column > &col)
 
template<SqlExpr Expr, typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator== (const AliasedColumn< Expr > &col, LiteralT &&literal)
 
template<SqlExpr Expr, typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator== (LiteralT &&literal, const AliasedColumn< Expr > &col)
 
template<SqlExpr Expr>
auto relx::query::operator== (const AliasedColumn< Expr > &col, const char *str)
 
template<SqlExpr Expr>
auto relx::query::operator== (const char *str, const AliasedColumn< Expr > &col)
 
template<SqlExpr Expr, typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator!= (const AliasedColumn< Expr > &col, LiteralT &&literal)
 
template<SqlExpr Expr, typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator!= (LiteralT &&literal, const AliasedColumn< Expr > &col)
 
template<SqlExpr Expr>
auto relx::query::operator!= (const AliasedColumn< Expr > &col, const char *str)
 
template<SqlExpr Expr>
auto relx::query::operator!= (const char *str, const AliasedColumn< Expr > &col)
 
template<SqlExpr Expr, typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator> (const AliasedColumn< Expr > &col, LiteralT &&literal)
 
template<SqlExpr Expr, typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator< (const AliasedColumn< Expr > &col, LiteralT &&literal)
 
template<SqlExpr Expr, typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator>= (const AliasedColumn< Expr > &col, LiteralT &&literal)
 
template<SqlExpr Expr, typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator<= (const AliasedColumn< Expr > &col, LiteralT &&literal)
 
template<SqlExpr Expr, typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator> (LiteralT &&literal, const AliasedColumn< Expr > &col)
 
template<SqlExpr Expr, typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator< (LiteralT &&literal, const AliasedColumn< Expr > &col)
 
template<SqlExpr Expr, typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator>= (LiteralT &&literal, const AliasedColumn< Expr > &col)
 
template<SqlExpr Expr, typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator<= (LiteralT &&literal, const AliasedColumn< Expr > &col)
 
template<SqlExpr Expr, typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator== (const FunctionExpr< Expr > &func, LiteralT &&literal)
 
template<SqlExpr Expr, typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator== (LiteralT &&literal, const FunctionExpr< Expr > &func)
 
template<SqlExpr Expr>
auto relx::query::operator== (const FunctionExpr< Expr > &func, const char *str)
 
template<SqlExpr Expr>
auto relx::query::operator== (const char *str, const FunctionExpr< Expr > &func)
 
template<SqlExpr Expr, typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator!= (const FunctionExpr< Expr > &func, LiteralT &&literal)
 
template<SqlExpr Expr, typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator!= (LiteralT &&literal, const FunctionExpr< Expr > &func)
 
template<SqlExpr Expr>
auto relx::query::operator!= (const FunctionExpr< Expr > &func, const char *str)
 
template<SqlExpr Expr>
auto relx::query::operator!= (const char *str, const FunctionExpr< Expr > &func)
 
template<SqlExpr Expr, typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator> (const FunctionExpr< Expr > &func, LiteralT &&literal)
 
template<SqlExpr Expr, typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator< (const FunctionExpr< Expr > &func, LiteralT &&literal)
 
template<SqlExpr Expr, typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator>= (const FunctionExpr< Expr > &func, LiteralT &&literal)
 
template<SqlExpr Expr, typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator<= (const FunctionExpr< Expr > &func, LiteralT &&literal)
 
template<SqlExpr Expr, typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator> (LiteralT &&literal, const FunctionExpr< Expr > &func)
 
template<SqlExpr Expr, typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator< (LiteralT &&literal, const FunctionExpr< Expr > &func)
 
template<SqlExpr Expr, typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator>= (LiteralT &&literal, const FunctionExpr< Expr > &func)
 
template<SqlExpr Expr, typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator<= (LiteralT &&literal, const FunctionExpr< Expr > &func)
 
template<SqlExpr First, SqlExpr Second, SqlExpr... Rest, typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator== (const CoalesceExpr< First, Second, Rest... > &coalesce, LiteralT &&literal)
 
template<SqlExpr First, SqlExpr Second, SqlExpr... Rest, typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator== (LiteralT &&literal, const CoalesceExpr< First, Second, Rest... > &coalesce)
 
template<SqlExpr First, SqlExpr Second, SqlExpr... Rest>
auto relx::query::operator== (const CoalesceExpr< First, Second, Rest... > &coalesce, const char *str)
 
template<SqlExpr First, SqlExpr Second, SqlExpr... Rest>
auto relx::query::operator== (const char *str, const CoalesceExpr< First, Second, Rest... > &coalesce)
 
template<SqlExpr First, SqlExpr Second, SqlExpr... Rest, typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator!= (const CoalesceExpr< First, Second, Rest... > &coalesce, LiteralT &&literal)
 
template<SqlExpr First, SqlExpr Second, SqlExpr... Rest, typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator!= (LiteralT &&literal, const CoalesceExpr< First, Second, Rest... > &coalesce)
 
template<SqlExpr First, SqlExpr Second, SqlExpr... Rest>
auto relx::query::operator!= (const CoalesceExpr< First, Second, Rest... > &coalesce, const char *str)
 
template<SqlExpr First, SqlExpr Second, SqlExpr... Rest>
auto relx::query::operator!= (const char *str, const CoalesceExpr< First, Second, Rest... > &coalesce)
 
template<typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator== (const CountAllExpr &expr, LiteralT &&literal)
 
template<typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator== (LiteralT &&literal, const CountAllExpr &expr)
 
template<typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator!= (const CountAllExpr &expr, LiteralT &&literal)
 
template<typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator!= (LiteralT &&literal, const CountAllExpr &expr)
 
template<typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator> (const CountAllExpr &expr, LiteralT &&literal)
 
template<typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator> (LiteralT &&literal, const CountAllExpr &expr)
 
template<typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator< (const CountAllExpr &expr, LiteralT &&literal)
 
template<typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator< (LiteralT &&literal, const CountAllExpr &expr)
 
template<typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator>= (const CountAllExpr &expr, LiteralT &&literal)
 
template<typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator>= (LiteralT &&literal, const CountAllExpr &expr)
 
template<typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator<= (const CountAllExpr &expr, LiteralT &&literal)
 
template<typename LiteralT >
requires std::is_arithmetic_v<std::remove_cvref_t<LiteralT>> || std::is_convertible_v<std::remove_cvref_t<LiteralT>, std::string>
auto relx::query::operator<= (LiteralT &&literal, const CountAllExpr &expr)
 
template<typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
requires date_checking::DateTimeType<T>
auto relx::query::operator> (const CurrentDateTimeExpr &expr, const schema::column< TableT, Name, T, Modifiers... > &col)
 
template<typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
requires date_checking::DateTimeType<T>
auto relx::query::operator< (const CurrentDateTimeExpr &expr, const schema::column< TableT, Name, T, Modifiers... > &col)
 
template<typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
requires date_checking::DateTimeType<T>
auto relx::query::operator>= (const CurrentDateTimeExpr &expr, const schema::column< TableT, Name, T, Modifiers... > &col)
 
template<typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
requires date_checking::DateTimeType<T>
auto relx::query::operator<= (const CurrentDateTimeExpr &expr, const schema::column< TableT, Name, T, Modifiers... > &col)
 
template<typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
requires date_checking::DateTimeType<T>
auto relx::query::operator== (const CurrentDateTimeExpr &expr, const schema::column< TableT, Name, T, Modifiers... > &col)
 
template<typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
requires date_checking::DateTimeType<T>
auto relx::query::operator!= (const CurrentDateTimeExpr &expr, const schema::column< TableT, Name, T, Modifiers... > &col)
 
template<SqlExpr Expr, typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
requires date_checking::DateTimeType<T>
auto relx::query::operator> (const UnaryDateFunctionExpr< Expr > &expr, const schema::column< TableT, Name, T, Modifiers... > &col)
 
template<SqlExpr Expr, typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
requires date_checking::DateTimeType<T>
auto relx::query::operator< (const UnaryDateFunctionExpr< Expr > &expr, const schema::column< TableT, Name, T, Modifiers... > &col)
 
template<SqlExpr Expr, typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
requires date_checking::DateTimeType<T>
auto relx::query::operator>= (const UnaryDateFunctionExpr< Expr > &expr, const schema::column< TableT, Name, T, Modifiers... > &col)
 
template<SqlExpr Expr, typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
requires date_checking::DateTimeType<T>
auto relx::query::operator<= (const UnaryDateFunctionExpr< Expr > &expr, const schema::column< TableT, Name, T, Modifiers... > &col)
 
template<SqlExpr Expr, typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
requires date_checking::DateTimeType<T>
auto relx::query::operator== (const UnaryDateFunctionExpr< Expr > &expr, const schema::column< TableT, Name, T, Modifiers... > &col)
 
template<SqlExpr Expr, typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
requires date_checking::DateTimeType<T>
auto relx::query::operator!= (const UnaryDateFunctionExpr< Expr > &expr, const schema::column< TableT, Name, T, Modifiers... > &col)
 
template<SqlExpr Left, SqlExpr Right, typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
requires date_checking::DateTimeType<T>
auto relx::query::operator> (const BinaryDateFunctionExpr< Left, Right > &expr, const schema::column< TableT, Name, T, Modifiers... > &col)
 
template<SqlExpr Left, SqlExpr Right, typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
requires date_checking::DateTimeType<T>
auto relx::query::operator< (const BinaryDateFunctionExpr< Left, Right > &expr, const schema::column< TableT, Name, T, Modifiers... > &col)
 
template<SqlExpr Left, SqlExpr Right, typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
requires date_checking::DateTimeType<T>
auto relx::query::operator>= (const BinaryDateFunctionExpr< Left, Right > &expr, const schema::column< TableT, Name, T, Modifiers... > &col)
 
template<SqlExpr Left, SqlExpr Right, typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
requires date_checking::DateTimeType<T>
auto relx::query::operator<= (const BinaryDateFunctionExpr< Left, Right > &expr, const schema::column< TableT, Name, T, Modifiers... > &col)
 
template<SqlExpr Left, SqlExpr Right, typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
requires date_checking::DateTimeType<T>
auto relx::query::operator== (const BinaryDateFunctionExpr< Left, Right > &expr, const schema::column< TableT, Name, T, Modifiers... > &col)
 
template<SqlExpr Left, SqlExpr Right, typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
requires date_checking::DateTimeType<T>
auto relx::query::operator!= (const BinaryDateFunctionExpr< Left, Right > &expr, const schema::column< TableT, Name, T, Modifiers... > &col)
 
template<SqlExpr DateExpr, SqlExpr IntervalExpr, typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
requires date_checking::DateTimeType<T>
auto relx::query::operator> (const DateArithmeticExpr< DateExpr, IntervalExpr > &expr, const schema::column< TableT, Name, T, Modifiers... > &col)
 
template<SqlExpr DateExpr, SqlExpr IntervalExpr, typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
requires date_checking::DateTimeType<T>
auto relx::query::operator< (const DateArithmeticExpr< DateExpr, IntervalExpr > &expr, const schema::column< TableT, Name, T, Modifiers... > &col)
 
template<SqlExpr DateExpr, SqlExpr IntervalExpr, typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
requires date_checking::DateTimeType<T>
auto relx::query::operator>= (const DateArithmeticExpr< DateExpr, IntervalExpr > &expr, const schema::column< TableT, Name, T, Modifiers... > &col)
 
template<SqlExpr DateExpr, SqlExpr IntervalExpr, typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
requires date_checking::DateTimeType<T>
auto relx::query::operator<= (const DateArithmeticExpr< DateExpr, IntervalExpr > &expr, const schema::column< TableT, Name, T, Modifiers... > &col)
 
template<SqlExpr DateExpr, SqlExpr IntervalExpr, typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
requires date_checking::DateTimeType<T>
auto relx::query::operator== (const DateArithmeticExpr< DateExpr, IntervalExpr > &expr, const schema::column< TableT, Name, T, Modifiers... > &col)
 
template<SqlExpr DateExpr, SqlExpr IntervalExpr, typename TableT , schema::fixed_string Name, typename T , typename... Modifiers>
requires date_checking::DateTimeType<T>
auto relx::query::operator!= (const DateArithmeticExpr< DateExpr, IntervalExpr > &expr, const schema::column< TableT, Name, T, Modifiers... > &col)
 

Variables

constexpr std::string_view relx::type_checking::type_error_message
 Constant error message for type mismatches.
 
template<typename T , template< typename... > class Template>
constexpr bool relx::query::meta::is_specialization_v = is_specialization<T, Template>::value