IronQuery
A SQL-first query builder for C++
Loading...
Searching...
No Matches
table_with_columns.hpp
1#pragma once
2
3#include <initializer_list>
4#include <iron_query/column.hpp>
5#include <iron_query/expr.hpp>
6#include <iron_query/table.hpp>
7#include <string>
8#include <string_view>
9#include <vector>
10
11namespace iron_query {
12
15class [[nodiscard]] TableWithColumns final : public Table {
16public:
19 static TableWithColumns FromRaw(std::string name,
20 std::vector<Column> columns);
21
24 static TableWithColumns FromRaw(std::string name,
25 std::initializer_list<Column> columns);
26
30
36 TableWithColumns As(std::string_view name) const;
37
42 Expr Dot(const std::string &column_name) const;
43
47 Expr Dot(const Column &column) const;
48
49private:
50 TableWithColumns(std::string name, std::vector<Column> columns,
51 std::string alias = "");
52 TableWithColumns(std::string name, std::initializer_list<Column> columns);
53
54 std::vector<Column> columns_;
55 std::string alias_;
56};
57
58} // namespace iron_query
Arbitrary SQL expression.
Definition expr.hpp:46
Table with associated columns. Usually not created by hands.
Definition table_with_columns.hpp:15
static TableWithColumns FromRaw(std::string name, std::initializer_list< Column > columns)
Attaches a set of columns to a trusted, developer-written table name. Never pass untrusted/dynamic da...
Expr Dot(const Column &column) const
Qualifies column as alias.column.name.
TableWithColumns As(std::string_view name) const
Aliases this table as this AS name, preserving its column list so Dot can verify a referenced column ...
Expr SelectArgAll() const
Builds a comma-separated Expr listing all column names, for use as a SELECT list.
static TableWithColumns FromRaw(std::string name, std::vector< Column > columns)
Attaches a set of columns to a trusted, developer-written table name. Never pass untrusted/dynamic da...
Expr Dot(const std::string &column_name) const
Qualifies column_name as alias.column_name.
Table with name.
Definition table.hpp:10
SQL table column.
Definition column.hpp:14