relx 0.1.0
A Modern C++23 Type-Safe SQL Query Builder
Loading...
Searching...
No Matches
relx::query::InsertQuery< Table, Columns, Values, SelectStmt, ReturningColumns > Class Template Reference

Base INSERT query builder. More...

#include <relx/query/insert.hpp>

Public Types

using table_type = Table
 
using columns_type = Columns
 
using values_type = Values
 
using select_type = SelectStmt
 
using returning_columns_type = ReturningColumns
 

Public Member Functions

 InsertQuery (Table table, Columns columns={}, Values values={}, SelectStmt select=std::nullopt, ReturningColumns returning_columns={})
 Constructor for the INSERT query builder.
 
std::string to_sql () const
 Generate the SQL for this INSERT query.
 
std::vector< std::string > bind_params () const
 Get the bind parameters for this INSERT query.
 
template<ColumnType... Cols>
auto columns (const Cols &... cols) const
 Specify columns to insert into.
 
template<typename... Args>
auto values (Args &&... args) const
 Add a row of values to insert.
 
template<typename Select >
requires SqlExpr<Select>
auto select (const Select &select) const
 Set a SELECT query to use for INSERT ... SELECT statements.
 
template<typename... Args>
auto returning (const Args &... args) const
 Specify columns to return after insertion.
 

Detailed Description

template<TableType Table, typename Columns = std::tuple<>, typename Values = std::tuple<>, typename SelectStmt = std::nullopt_t, typename ReturningColumns = std::tuple<>>
class relx::query::InsertQuery< Table, Columns, Values, SelectStmt, ReturningColumns >

Base INSERT query builder.

Template Parameters
TableTable to insert into
ColumnsTuple of column references
ValuesTuple of value tuples for multi-row inserts, or empty for other insertion types
SelectQueryOptional SELECT query for INSERT ... SELECT statements
ReturningColumnsTuple of column expressions to return after insertion

Definition at line 47 of file insert.hpp.

Member Typedef Documentation

◆ columns_type

template<TableType Table, typename Columns = std::tuple<>, typename Values = std::tuple<>, typename SelectStmt = std::nullopt_t, typename ReturningColumns = std::tuple<>>
using relx::query::InsertQuery< Table, Columns, Values, SelectStmt, ReturningColumns >::columns_type = Columns

Definition at line 166 of file insert.hpp.

◆ returning_columns_type

template<TableType Table, typename Columns = std::tuple<>, typename Values = std::tuple<>, typename SelectStmt = std::nullopt_t, typename ReturningColumns = std::tuple<>>
using relx::query::InsertQuery< Table, Columns, Values, SelectStmt, ReturningColumns >::returning_columns_type = ReturningColumns

Definition at line 169 of file insert.hpp.

◆ select_type

template<TableType Table, typename Columns = std::tuple<>, typename Values = std::tuple<>, typename SelectStmt = std::nullopt_t, typename ReturningColumns = std::tuple<>>
using relx::query::InsertQuery< Table, Columns, Values, SelectStmt, ReturningColumns >::select_type = SelectStmt

Definition at line 168 of file insert.hpp.

◆ table_type

template<TableType Table, typename Columns = std::tuple<>, typename Values = std::tuple<>, typename SelectStmt = std::nullopt_t, typename ReturningColumns = std::tuple<>>
using relx::query::InsertQuery< Table, Columns, Values, SelectStmt, ReturningColumns >::table_type = Table

Definition at line 165 of file insert.hpp.

◆ values_type

template<TableType Table, typename Columns = std::tuple<>, typename Values = std::tuple<>, typename SelectStmt = std::nullopt_t, typename ReturningColumns = std::tuple<>>
using relx::query::InsertQuery< Table, Columns, Values, SelectStmt, ReturningColumns >::values_type = Values

Definition at line 167 of file insert.hpp.

Constructor & Destructor Documentation

◆ InsertQuery()

template<TableType Table, typename Columns = std::tuple<>, typename Values = std::tuple<>, typename SelectStmt = std::nullopt_t, typename ReturningColumns = std::tuple<>>
relx::query::InsertQuery< Table, Columns, Values, SelectStmt, ReturningColumns >::InsertQuery ( Table  table,
Columns  columns = {},
Values  values = {},
SelectStmt  select = std::nullopt,
ReturningColumns  returning_columns = {} 
)
inlineexplicit

Constructor for the INSERT query builder.

Parameters
tableThe table to insert into
columnsThe columns to insert into
valuesThe values to insert
selectThe SELECT statement (for INSERT ... SELECT)
returning_columnsThe columns to return after insertion

Definition at line 177 of file insert.hpp.

Member Function Documentation

◆ bind_params()

template<TableType Table, typename Columns = std::tuple<>, typename Values = std::tuple<>, typename SelectStmt = std::nullopt_t, typename ReturningColumns = std::tuple<>>
std::vector< std::string > relx::query::InsertQuery< Table, Columns, Values, SelectStmt, ReturningColumns >::bind_params ( ) const
inline

Get the bind parameters for this INSERT query.

Returns
Vector of bind parameters

Definition at line 214 of file insert.hpp.

◆ columns()

template<TableType Table, typename Columns = std::tuple<>, typename Values = std::tuple<>, typename SelectStmt = std::nullopt_t, typename ReturningColumns = std::tuple<>>
template<ColumnType... Cols>
auto relx::query::InsertQuery< Table, Columns, Values, SelectStmt, ReturningColumns >::columns ( const Cols &...  cols) const
inline

Specify columns to insert into.

Template Parameters
ColsColumn types
Parameters
colsThe columns to insert into
Returns
New InsertQuery with columns specified

Definition at line 242 of file insert.hpp.

◆ returning()

template<TableType Table, typename Columns = std::tuple<>, typename Values = std::tuple<>, typename SelectStmt = std::nullopt_t, typename ReturningColumns = std::tuple<>>
template<typename... Args>
auto relx::query::InsertQuery< Table, Columns, Values, SelectStmt, ReturningColumns >::returning ( const Args &...  args) const
inline

Specify columns to return after insertion.

Template Parameters
ArgsColumn types or SQL expressions
Parameters
argsThe columns or expressions to return
Returns
New InsertQuery with the RETURNING clause added

Definition at line 301 of file insert.hpp.

◆ select()

template<TableType Table, typename Columns = std::tuple<>, typename Values = std::tuple<>, typename SelectStmt = std::nullopt_t, typename ReturningColumns = std::tuple<>>
template<typename Select >
requires SqlExpr<Select>
auto relx::query::InsertQuery< Table, Columns, Values, SelectStmt, ReturningColumns >::select ( const Select &  select) const
inline

Set a SELECT query to use for INSERT ... SELECT statements.

Template Parameters
SelectThe SELECT query type
Parameters
selectThe SELECT query
Returns
New InsertQuery with the SELECT query set

Definition at line 291 of file insert.hpp.

◆ to_sql()

template<TableType Table, typename Columns = std::tuple<>, typename Values = std::tuple<>, typename SelectStmt = std::nullopt_t, typename ReturningColumns = std::tuple<>>
std::string relx::query::InsertQuery< Table, Columns, Values, SelectStmt, ReturningColumns >::to_sql ( ) const
inline

Generate the SQL for this INSERT query.

Returns
The SQL string

Definition at line 184 of file insert.hpp.

◆ values()

template<TableType Table, typename Columns = std::tuple<>, typename Values = std::tuple<>, typename SelectStmt = std::nullopt_t, typename ReturningColumns = std::tuple<>>
template<typename... Args>
auto relx::query::InsertQuery< Table, Columns, Values, SelectStmt, ReturningColumns >::values ( Args &&...  args) const
inline

Add a row of values to insert.

Template Parameters
ArgsThe value expression types or raw value types
Parameters
argsThe values to insert (automatically wrapped with val() if not already SqlExpr)
Returns
New InsertQuery with the values added

Definition at line 255 of file insert.hpp.


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