Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions docs/names.md
Original file line number Diff line number Diff line change
Expand Up @@ -98,6 +98,12 @@ When used with C++26 and reflection support, the library offers another overload
// rename entities.
foo.as<"left">(); // tab_foo AS left
max(left.id).as<"max_id">(); // MAX(left.id) AS max_id
// alternatively you can use the user-defined literal "_alias" instead of template arguments.
using namespace sqlpp::literals; // using namespace required in scope
foo.as("left"_alias); // tab_foo AS left
max(left.id).as("max_id"_alias); // MAX(left.id) AS max_id
```

**Experimental**
Expand Down
8 changes: 8 additions & 0 deletions include/sqlpp23/core/name/create_reflection_name_tag.h
Original file line number Diff line number Diff line change
Expand Up @@ -93,4 +93,12 @@ consteval auto make_alias() -> ::sqlpp::meta::reflection_alias<Alias> {
}

} // namespace sqlpp::meta

namespace sqlpp::literals {
template <::sqlpp::detail::fixed_string Alias>
consteval auto operator""_alias() -> ::sqlpp::meta::reflection_alias<Alias> {
return {};
}

} // namespace sqlpp::literals
#endif
6 changes: 4 additions & 2 deletions tests/core/meta/alias.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,17 +28,19 @@

int main(int, char*[]) {
#if SQLPP_INCLUDE_REFLECTION == 1
using namespace sqlpp::literals;

const auto foo = test::TabFoo{};
const auto bar = test::TabBar{};

SQLPP_COMPARE(avg(bar.id + 7).as<"my_average">(),
"AVG(tab_bar.id + 7) AS my_average");

const auto table_a = foo.as<"table_a">();
const auto table_b = bar.as<"table_b">();
const auto table_b = bar.as("table_b"_alias);

SQLPP_COMPARE(sqlpp::select(table_a.id.as<"id_a">(), table_a.intN,
table_b.id.as<"id_b">(), table_b.textN)
table_b.id.as("id_b"_alias), table_b.textN)
.from(table_a.join(table_b).on(table_a.id == table_b.id)),
"SELECT table_a.id AS id_a, table_a.int_n, table_b.id AS id_b, "
"table_b.text_n "
Expand Down