Lightweight 0.20260617.0
Loading...
Searching...
No Matches
Lightweight::SqlSelectQueryBuilder Class Reference

Query builder for building SELECT ... queries. More...

#include <Select.hpp>

Inheritance diagram for Lightweight::SqlSelectQueryBuilder:
Lightweight::SqlSelectQueryStarter

Public Types

using SelectType = detail::SelectType
 The select query type alias.
 

Public Member Functions

 SqlSelectQueryBuilder (SqlQueryFormatter const &formatter, std::string table, std::string tableAlias) noexcept
 Constructs a SELECT query builder.
 
constexpr LIGHTWEIGHT_FORCE_INLINE SqlSelectQueryBuilderVarying () noexcept
 Sets the builder mode to Varying, allowing varying final query types.
 
template<typename... MoreFields>
SqlSelectQueryBuilderFields (std::string_view const &firstField, MoreFields &&... moreFields)
 Adds a sequence of columns to the SELECT clause.
 
LIGHTWEIGHT_API SqlSelectQueryBuilderField (std::string_view const &fieldName)
 Adds a single column to the SELECT clause.
 
LIGHTWEIGHT_API SqlSelectQueryBuilder const & Field (std::string_view const &fieldName) const
 Adds a single column to the SELECT clause.
 
LIGHTWEIGHT_API SqlSelectQueryBuilderField (SqlQualifiedTableColumnName const &fieldName)
 Adds a single column to the SELECT clause.
 
LIGHTWEIGHT_API SqlSelectQueryBuilder const & Field (SqlQualifiedTableColumnName const &fieldName) const
 Adds a single column to the SELECT clause.
 
LIGHTWEIGHT_API SqlSelectQueryBuilderField (SqlFieldExpression const &fieldExpression)
 Adds an aggregate function call to the SELECT clause.
 
LIGHTWEIGHT_API SqlSelectQueryBuilder const & Field (SqlFieldExpression const &fieldExpression) const
 Adds an aggregate function call to the SELECT clause.
 
LIGHTWEIGHT_API SqlSelectQueryBuilderAs (std::string_view alias)
 Aliases the last added field (a column or an aggregate call) in the SELECT clause.
 
LIGHTWEIGHT_API SqlSelectQueryBuilder const & As (std::string_view alias) const
 Aliases the last added field (a column or an aggregate call) in the SELECT clause.
 
LIGHTWEIGHT_API SqlSelectQueryBuilderFields (std::vector< std::string_view > const &fieldNames)
 Adds a sequence of columns to the SELECT clause.
 
LIGHTWEIGHT_API SqlSelectQueryBuilder const & Fields (std::vector< std::string_view > const &fieldNames) const
 Adds a sequence of columns to the SELECT clause.
 
LIGHTWEIGHT_API SqlSelectQueryBuilderFields (std::vector< std::string_view > const &fieldNames, std::string_view tableName)
 Adds a sequence of columns from the given table to the SELECT clause.
 
LIGHTWEIGHT_API SqlSelectQueryBuilder const & Fields (std::vector< std::string_view > const &fieldNames, std::string_view tableName) const
 Adds a sequence of columns from the given table to the SELECT clause.
 
LIGHTWEIGHT_API SqlSelectQueryBuilderFields (std::initializer_list< std::string_view > const &fieldNames, std::string_view tableName)
 Adds a sequence of columns from the given table to the SELECT clause.
 
LIGHTWEIGHT_API SqlSelectQueryBuilder const & Fields (std::initializer_list< std::string_view > const &fieldNames, std::string_view tableName) const
 Adds a sequence of columns from the given table to the SELECT clause.
 
LIGHTWEIGHT_API SqlSelectQueryBuilderFields (std::span< SqlQualifiedTableColumnName const > fieldNames)
 Adds a sequence of qualified table column names to the SELECT clause.
 
LIGHTWEIGHT_API SqlSelectQueryBuilder const & Fields (std::span< SqlQualifiedTableColumnName const > fieldNames) const
 Adds a sequence of qualified table column names to the SELECT clause.
 
LIGHTWEIGHT_API SqlSelectQueryBuilderFields (std::initializer_list< SqlQualifiedTableColumnName const > fieldNames)
 Adds a sequence of qualified table column names to the SELECT clause.
 
LIGHTWEIGHT_API SqlSelectQueryBuilder const & Fields (std::initializer_list< SqlQualifiedTableColumnName const > fieldNames) const
 Adds a sequence of qualified table column names to the SELECT clause.
 
template<typename FirstRecord , typename... MoreRecords>
SqlSelectQueryBuilderFields ()
 Adds a sequence of columns from the given tables to the SELECT clause.
 
LIGHTWEIGHT_API SqlSelectQueryBuilderFieldAs (std::string_view const &fieldName, std::string_view const &alias)
 Adds a single column with an alias to the SELECT clause.
 
LIGHTWEIGHT_API SqlSelectQueryBuilderFieldAs (SqlQualifiedTableColumnName const &fieldName, std::string_view const &alias)
 Adds a single column with an alias to the SELECT clause.
 
template<typename Callable >
SqlSelectQueryBuilderBuild (Callable const &callable)
 Builds the query using a callable.
 
LIGHTWEIGHT_API ComposedQuery Count ()
 Finalizes building the query as SELECT COUNT(*) ... query.
 
LIGHTWEIGHT_API ComposedQuery Count () const
 Finalizes building the query as SELECT COUNT(*) ... query.
 
LIGHTWEIGHT_API ComposedQuery All ()
 Finalizes building the query as SELECT field names FROM ... query.
 
LIGHTWEIGHT_API ComposedQuery All () const
 Finalizes building the query as SELECT field names FROM ... query.
 
LIGHTWEIGHT_API ComposedQuery First (size_t count=1)
 Finalizes building the query as SELECT TOP n field names FROM ... query.
 
LIGHTWEIGHT_API ComposedQuery First (size_t count=1) const
 Finalizes building the query as SELECT TOP n field names FROM ... query.
 
LIGHTWEIGHT_API ComposedQuery Range (std::size_t offset, std::size_t limit)
 Finalizes building the query as SELECT field names FROM ... query with a range.
 
LIGHTWEIGHT_API ComposedQuery Range (std::size_t offset, std::size_t limit) const
 Finalizes building the query as SELECT field names FROM ... query with a range.
 
LIGHTWEIGHT_FORCE_INLINE SqlSearchCondition & SearchCondition () noexcept
 Returns the search condition for the query.
 
LIGHTWEIGHT_FORCE_INLINE SqlQueryFormatter const & Formatter () const noexcept
 Returns the SQL query formatter.
 
template<typename Callable >
LIGHTWEIGHT_FORCE_INLINE SqlSelectQueryBuilderBuild (Callable const &callable)
 Builds the query using a callable.
 
template<typename FirstRecord , typename... MoreRecords>
LIGHTWEIGHT_FORCE_INLINE SqlSelectQueryBuilderFields ()
 Adds fields from one or more record types to the SELECT clause.
 

Detailed Description

Query builder for building SELECT ... queries.

Not constructed directly by user code; obtained by adding a projection (Field / Fields / FieldAs / Build) to a SqlSelectQueryStarter — the type returned by SqlQueryBuilder::Select(). The starter intentionally hides the finalizers All, First, and Range so that an empty Select().All() (which would emit malformed SELECT FROM "T" SQL) fails at compile time; the gate is in the starter, not here.

See also
SqlQueryBuilder
SqlSelectQueryStarter

Definition at line 98 of file Select.hpp.

Member Typedef Documentation

◆ SelectType

using Lightweight::SqlSelectQueryBuilder::SelectType = detail::SelectType

The select query type alias.

Definition at line 102 of file Select.hpp.

Constructor & Destructor Documentation

◆ SqlSelectQueryBuilder()

Lightweight::SqlSelectQueryBuilder::SqlSelectQueryBuilder ( SqlQueryFormatter const &  formatter,
std::string  table,
std::string  tableAlias 
)
inlineexplicitnoexcept

Constructs a SELECT query builder.

Definition at line 105 of file Select.hpp.

Member Function Documentation

◆ Varying()

constexpr LIGHTWEIGHT_FORCE_INLINE SqlSelectQueryBuilder & Lightweight::SqlSelectQueryBuilder::Varying ( )
inlineconstexprnoexcept

Sets the builder mode to Varying, allowing varying final query types.

Definition at line 116 of file Select.hpp.

◆ Fields() [1/7]

template<typename... MoreFields>
SqlSelectQueryBuilder & Lightweight::SqlSelectQueryBuilder::Fields ( std::string_view const &  firstField,
MoreFields &&...  moreFields 
)

Adds a sequence of columns to the SELECT clause.

Definition at line 268 of file Select.hpp.

◆ Field() [1/3]

LIGHTWEIGHT_API SqlSelectQueryBuilder const & Lightweight::SqlSelectQueryBuilder::Field ( std::string_view const &  fieldName) const

Adds a single column to the SELECT clause.

Const overload: delegates via const_cast — see Count() const.

◆ Field() [2/3]

LIGHTWEIGHT_API SqlSelectQueryBuilder const & Lightweight::SqlSelectQueryBuilder::Field ( SqlQualifiedTableColumnName const &  fieldName) const

Adds a single column to the SELECT clause.

Const overload: delegates via const_cast — see Count() const.

◆ Field() [3/3]

LIGHTWEIGHT_API SqlSelectQueryBuilder const & Lightweight::SqlSelectQueryBuilder::Field ( SqlFieldExpression const &  fieldExpression) const

Adds an aggregate function call to the SELECT clause.

Const overload: delegates via const_cast — see Count() const.

◆ As()

LIGHTWEIGHT_API SqlSelectQueryBuilder const & Lightweight::SqlSelectQueryBuilder::As ( std::string_view  alias) const

Aliases the last added field (a column or an aggregate call) in the SELECT clause.

Const overload: delegates via const_cast — see Count() const.

◆ Fields() [2/7]

LIGHTWEIGHT_API SqlSelectQueryBuilder const & Lightweight::SqlSelectQueryBuilder::Fields ( std::vector< std::string_view > const &  fieldNames) const

Adds a sequence of columns to the SELECT clause.

Const overload: delegates via const_cast — see Count() const.

◆ Fields() [3/7]

LIGHTWEIGHT_API SqlSelectQueryBuilder const & Lightweight::SqlSelectQueryBuilder::Fields ( std::vector< std::string_view > const &  fieldNames,
std::string_view  tableName 
) const

Adds a sequence of columns from the given table to the SELECT clause.

Const overload: delegates via const_cast — see Count() const.

◆ Fields() [4/7]

LIGHTWEIGHT_API SqlSelectQueryBuilder const & Lightweight::SqlSelectQueryBuilder::Fields ( std::initializer_list< std::string_view > const &  fieldNames,
std::string_view  tableName 
) const

Adds a sequence of columns from the given table to the SELECT clause.

Const overload: delegates via const_cast — see Count() const.

◆ Fields() [5/7]

LIGHTWEIGHT_API SqlSelectQueryBuilder const & Lightweight::SqlSelectQueryBuilder::Fields ( std::span< SqlQualifiedTableColumnName const >  fieldNames) const

Adds a sequence of qualified table column names to the SELECT clause.

Const overload: delegates via const_cast — see Count() const.

◆ Fields() [6/7]

LIGHTWEIGHT_API SqlSelectQueryBuilder const & Lightweight::SqlSelectQueryBuilder::Fields ( std::initializer_list< SqlQualifiedTableColumnName const >  fieldNames) const

Adds a sequence of qualified table column names to the SELECT clause.

Const overload: delegates via const_cast — see Count() const.

◆ Count()

LIGHTWEIGHT_API ComposedQuery Lightweight::SqlSelectQueryBuilder::Count ( ) const

Finalizes building the query as SELECT COUNT(*) ... query.

Const overload: doesn't mutate *this — returns a snapshot ComposedQuery so the finalizer can be reached through a const SqlSelectQueryBuilder.

◆ All()

LIGHTWEIGHT_API ComposedQuery Lightweight::SqlSelectQueryBuilder::All ( ) const

Finalizes building the query as SELECT field names FROM ... query.

Const overload: doesn't mutate *this — see Count() const.

◆ First()

LIGHTWEIGHT_API ComposedQuery Lightweight::SqlSelectQueryBuilder::First ( size_t  count = 1) const

Finalizes building the query as SELECT TOP n field names FROM ... query.

Const overload: doesn't mutate *this — see Count() const.

◆ Range()

LIGHTWEIGHT_API ComposedQuery Lightweight::SqlSelectQueryBuilder::Range ( std::size_t  offset,
std::size_t  limit 
) const

Finalizes building the query as SELECT field names FROM ... query with a range.

Const overload: doesn't mutate *this — see Count() const.

◆ SearchCondition()

LIGHTWEIGHT_FORCE_INLINE SqlSearchCondition & Lightweight::SqlSelectQueryBuilder::SearchCondition ( )
inlinenoexcept

Returns the search condition for the query.

Definition at line 243 of file Select.hpp.

◆ Formatter()

LIGHTWEIGHT_FORCE_INLINE SqlQueryFormatter const & Lightweight::SqlSelectQueryBuilder::Formatter ( ) const
inlinenoexcept

Returns the SQL query formatter.

Definition at line 251 of file Select.hpp.

◆ Build()

template<typename Callable >
LIGHTWEIGHT_FORCE_INLINE SqlSelectQueryBuilder & Lightweight::SqlSelectQueryBuilder::Build ( Callable const &  callable)
inline

Builds the query using a callable.

Definition at line 288 of file Select.hpp.

◆ Fields() [7/7]

template<typename FirstRecord , typename... MoreRecords>
LIGHTWEIGHT_FORCE_INLINE SqlSelectQueryBuilder & Lightweight::SqlSelectQueryBuilder::Fields ( )
inline

Adds fields from one or more record types to the SELECT clause.

Definition at line 296 of file Select.hpp.

References Lightweight::SqlQualifiedTableColumnName::tableName.


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