|
Lightweight 0.20261105.1
|
Query builder for building SELECT ... queries. More...
#include <Select.hpp>
Public Types | |
| using | SelectType = detail::SelectType |
| The select query type alias. | |
Public Member Functions | |
| SqlSelectQueryBuilder (SqlQueryFormatter const &formatter, std::string table, std::string tableAlias, std::vector< SqlVariant > *inputBindings=nullptr) noexcept | |
| template<typename... MoreFields> | |
| SqlSelectQueryBuilder & | Fields (std::string_view const &firstField, MoreFields const &... moreFields) |
| Adds a sequence of columns to the SELECT clause. | |
| LIGHTWEIGHT_API SqlSelectQueryBuilder & | Field (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 SqlSelectQueryBuilder & | Field (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 SqlSelectQueryBuilder & | Field (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 SqlSelectQueryBuilder & | As (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 SqlSelectQueryBuilder & | Fields (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 SqlSelectQueryBuilder & | Fields (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 SqlSelectQueryBuilder & | Fields (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 SqlSelectQueryBuilder & | Fields (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 SqlSelectQueryBuilder & | Fields (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> | |
| SqlSelectQueryBuilder & | Fields () |
| Adds a sequence of columns from the given tables to the SELECT clause. | |
| LIGHTWEIGHT_API SqlSelectQueryBuilder & | FieldAs (std::string_view const &fieldName, std::string_view const &alias) |
| Adds a single column with an alias to the SELECT clause. | |
| LIGHTWEIGHT_API SqlSelectQueryBuilder & | FieldAs (SqlQualifiedTableColumnName const &fieldName, std::string_view const &alias) |
| Adds a single column with an alias to the SELECT clause. | |
| template<typename Callable > | |
| SqlSelectQueryBuilder & | Build (Callable const &callable) |
| Builds the query using a callable. | |
| LIGHTWEIGHT_API SqlSelectQueryBuilder & | ReadUncommitted () noexcept |
| LIGHTWEIGHT_API ComposedQuery | Count () |
| LIGHTWEIGHT_API ComposedQuery | Count () const |
| 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 SqlSelectQueryBuilder & | Build (Callable const &callable) |
| Builds the query using a callable. | |
| template<typename FirstRecord , typename... MoreRecords> | |
| LIGHTWEIGHT_FORCE_INLINE SqlSelectQueryBuilder & | Fields () |
| Adds fields from one or more record types to the SELECT clause. | |
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.
Definition at line 88 of file Select.hpp.
| using Lightweight::SqlSelectQueryBuilder::SelectType = detail::SelectType |
The select query type alias.
Definition at line 92 of file Select.hpp.
|
inlineexplicitnoexcept |
Constructs a SELECT query builder.
| formatter | Dialect the query is written in. |
| table | Table to select from. |
| tableAlias | Alias for that table, empty for none. |
| inputBindings | Receives the WHERE values as bound parameters instead of having them written into the query text; null keeps them inline. Values are appended, never cleared. Execute the result with SqlStatement::ExecuteWithVariants(), not ExecuteDirect(), which would leave the markers unbound. Both the vector and anything a stored std::string_view / std::u16string_view points at must outlive the execution, because the binder hands the driver that pointer directly. |
Definition at line 111 of file Select.hpp.
| SqlSelectQueryBuilder & Lightweight::SqlSelectQueryBuilder::Fields | ( | std::string_view const & | firstField, |
| MoreFields const &... | moreFields | ||
| ) |
Adds a sequence of columns to the SELECT clause.
Definition at line 296 of file Select.hpp.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
| 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.
|
noexcept |
Asks for a dirty read of every table the statement reads, where the dialect has a per-table hint for it (SQL Server: WITH (READUNCOMMITTED)); other dialects render the statement unchanged.
The hint follows the FROM table (and its alias) and each joined table (and its alias), in every finalizer (All(), First(), Range(), Count()). Only this statement is affected: the connection's transaction isolation level is left alone, so it also works inside an open transaction.
| LIGHTWEIGHT_API ComposedQuery Lightweight::SqlSelectQueryBuilder::Count | ( | ) |
Finalizes building the query as SELECT COUNT(*) ... query.
A preceding GroupBy is honored: the query then counts the rows of each group and yields one row per group, rather than a single total over the whole result set.
| LIGHTWEIGHT_API ComposedQuery Lightweight::SqlSelectQueryBuilder::Count | ( | ) | const |
Finalizes building the query as SELECT COUNT(*) ... query.
A preceding GroupBy is honored: the query then counts the rows of each group and yields one row per group, rather than a single total over the whole result set. Const overload: doesn't mutate *this — returns a snapshot ComposedQuery so the finalizer can be reached through a const SqlSelectQueryBuilder.
| 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.
| 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.
| 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.
|
inlinenoexcept |
Returns the search condition for the query.
Definition at line 261 of file Select.hpp.
|
inlinenoexcept |
Returns the SQL query formatter.
Definition at line 267 of file Select.hpp.
|
inline |
Builds the query using a callable.
Definition at line 319 of file Select.hpp.
|
inline |
Adds fields from one or more record types to the SELECT clause.
Definition at line 327 of file Select.hpp.
References Lightweight::SqlQualifiedTableColumnName::tableName.