27 qualified = table +
"." + qualified;
35template <ColumnType Column>
41 explicit ColumnRef(
const Column& col) : col_(col) {}
45 std::vector<std::string>
bind_params()
const override {
return {}; }
47 std::string
column_name()
const override {
return std::string(Column::name); }
51 using parent_table =
typename Column::table_type;
52 return std::string(parent_table::table_name);
55 const Column&
column()
const {
return col_; }
65template <ColumnType Column>
72template <SqlExpr Expr>
76 : expr_(
std::make_shared<Expr>(expr)), alias_(
std::move(alias)) {}
79 : expr_(
std::make_shared<Expr>(
std::move(expr))), alias_(
std::move(alias)) {}
83 : expr_(
std::move(expr)), alias_(
std::move(alias)) {}
85 std::string
to_sql()
const override {
return expr_->to_sql() +
" AS " + alias_; }
87 std::vector<std::string>
bind_params()
const override {
return expr_->bind_params(); }
94 std::shared_ptr<Expr> expr_;
103template <SqlExpr Expr>
104auto as(
const Expr& expr, std::string alias) {
113template <ColumnType Column>
std::string column_name() const override
std::string table_name() const override
AliasedColumn(Expr &&expr, std::string alias)
std::vector< std::string > bind_params() const override
AliasedColumn(std::shared_ptr< Expr > expr, std::string alias)
std::string to_sql() const override
AliasedColumn(const Expr &expr, std::string alias)
Base class for column expressions.
virtual std::string qualified_name() const
virtual ~ColumnExpression()=default
virtual std::string column_name() const =0
virtual std::string table_name() const =0
Column reference expression.
typename Column::value_type value_type
const Column & column() const
std::string to_sql() const override
std::vector< std::string > bind_params() const override
std::string column_name() const override
ColumnRef(const Column &col)
std::string table_name() const override
Represents a column in a database table.
auto column_ref(const Column &col)
Create a column reference expression.
auto as(const Expr &expr, std::string alias)
Create an aliased column expression.
Base class for SQL expressions.