IronQuery
A SQL-first query builder for C++
Loading...
Searching...
No Matches
insert_into.hpp
1#pragma once
2
3#include <initializer_list>
4#include <iron_query/expr.hpp>
5#include <iron_query/select_item.hpp>
6#include <iron_query/table.hpp>
7#include <string>
8#include <utility>
9#include <vector>
10
11namespace iron_query {
12
16class [[nodiscard]] InsertInto final {
17public:
19 InsertInto(const Table &tbl);
20
26 InsertInto Columns(std::initializer_list<Expr> cols) &&;
27
35 InsertInto Values(std::initializer_list<Expr> vals) &&;
36
48 InsertInto Rows(std::initializer_list<std::initializer_list<Expr>> rows) &&;
49
53
56 InsertInto Returning(std::initializer_list<SelectItem> items) &&;
57
60
64 InsertInto OnConflictDoNothing(std::initializer_list<Expr> target_cols) &&;
65
74 std::initializer_list<Expr> target_cols,
75 std::initializer_list<std::pair<Expr, Expr>> assignments) &&;
76
79 std::string ToString() const;
80
81private:
82 std::string into_;
83 std::vector<std::string> columns_;
84 std::vector<std::vector<std::string>> rows_;
85 std::string returning_;
86 std::string on_conflict_;
87};
88
89} // namespace iron_query
Transitional representation for INSERT INTO query.
Definition insert_into.hpp:16
InsertInto Rows(std::initializer_list< std::initializer_list< Expr > > rows) &&
Sets multiple rows of values to insert, e.g. Rows({{1, 2}, {3, 4}}) for VALUES (1,...
std::string ToString() const
InsertInto OnConflictDoNothing(std::initializer_list< Expr > target_cols) &&
ON CONFLICT (target_cols) DO NOTHING.
InsertInto OnConflictDoNothing() &&
ON CONFLICT DO NOTHING, matching any conflict.
InsertInto Columns(std::initializer_list< Expr > cols) &&
Sets the list of columns to insert into.
InsertInto Values(std::initializer_list< Expr > vals) &&
Sets a single row of values to insert, matching Columns by position.
InsertInto(const Table &tbl)
Starts an INSERT INTO tbl query.
InsertInto OnConflictDoUpdate(std::initializer_list< Expr > target_cols, std::initializer_list< std::pair< Expr, Expr > > assignments) &&
ON CONFLICT (target_cols) DO UPDATE SET column = value, .... Reference the row that triggered the con...
InsertInto Returning(std::initializer_list< SelectItem > items) &&
Sets the RETURNING clause to a comma-separated list of entries.
InsertInto Returning(SelectItem item) &&
Sets the RETURNING clause to a single entry.
A single entry of a SELECT list: an expression, optionally renamed with Expr::As. Kept distinct from ...
Definition select_item.hpp:15
Table with name.
Definition table.hpp:10