Skip to content

Commit b0aa23e

Browse files
committed
Merge branch 'develop' of https://github.com/rbock/sqlpp11 into develop
2 parents 3963b50 + be06582 commit b0aa23e

File tree

4 files changed

+20
-11
lines changed

4 files changed

+20
-11
lines changed

include/sqlpp11/basic_expression_operators.h

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -187,14 +187,19 @@ namespace sqlpp
187187
return {*static_cast<const Expr*>(this)};
188188
}
189189

190-
auto asc() const -> sort_order_t<Expr, sort_type::asc>
190+
auto asc() const -> sort_order_t<Expr>
191191
{
192-
return {*static_cast<const Expr*>(this)};
192+
return {*static_cast<const Expr*>(this), sort_type::asc};
193193
}
194194

195-
auto desc() const -> sort_order_t<Expr, sort_type::desc>
195+
auto desc() const -> sort_order_t<Expr>
196196
{
197-
return {*static_cast<const Expr*>(this)};
197+
return {*static_cast<const Expr*>(this), sort_type::desc};
198+
}
199+
200+
auto order(sort_type s) const -> sort_order_t<Expr>
201+
{
202+
return {*static_cast<const Expr*>(this), s};
198203
}
199204

200205
template <typename... T>

include/sqlpp11/sort_order.h

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,25 +39,26 @@ namespace sqlpp
3939
desc
4040
};
4141

42-
template <typename Expression, sort_type SortType>
42+
template <typename Expression>
4343
struct sort_order_t
4444
{
4545
using _traits = make_traits<no_value_t, tag::is_sort_order>;
4646
using _nodes = detail::type_vector<Expression>;
4747

4848
Expression _expression;
49+
sort_type _sort_type;
4950
};
5051

51-
template <typename Context, typename Expression, sort_type SortType>
52-
struct serializer_t<Context, sort_order_t<Expression, SortType>>
52+
template <typename Context, typename Expression>
53+
struct serializer_t<Context, sort_order_t<Expression>>
5354
{
5455
using _serialize_check = serialize_check_of<Context, Expression>;
55-
using T = sort_order_t<Expression, SortType>;
56+
using T = sort_order_t<Expression>;
5657

5758
static Context& _(const T& t, Context& context)
5859
{
5960
serialize_operand(t._expression, context);
60-
switch (SortType)
61+
switch (t._sort_type)
6162
{
6263
case sort_type::asc:
6364
context << " ASC";

test_serializer/CustomQuery.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,9 +57,11 @@ int CustomQuery(int, char* [])
5757
custom_query(sqlpp::select(), dynamic_select_flags(db, sqlpp::distinct), dynamic_select_columns(db, foo.omega),
5858
dynamic_from(db, foo.join(bar).on(foo.omega == bar.alpha)), dynamic_where(db, bar.alpha > 17),
5959
dynamic_group_by(db, foo.omega), dynamic_having(db, avg(bar.alpha) > 19),
60-
dynamic_order_by(db, foo.omega.asc()), sqlpp::dynamic_limit(db), sqlpp::dynamic_offset(db)),
60+
dynamic_order_by(db, foo.omega.asc(), foo.psi.order(sqlpp::sort_type::desc)),
61+
sqlpp::dynamic_limit(db), sqlpp::dynamic_offset(db)),
6162
"SELECT DISTINCT tab_foo.omega FROM tab_foo INNER JOIN tab_bar ON (tab_foo.omega=tab_bar.alpha) WHERE "
62-
"(tab_bar.alpha>17) GROUP BY tab_foo.omega HAVING (AVG(tab_bar.alpha)>19) ORDER BY tab_foo.omega ASC ");
63+
"(tab_bar.alpha>17) GROUP BY tab_foo.omega HAVING (AVG(tab_bar.alpha)>19) ORDER BY tab_foo.omega "
64+
"ASC,tab_foo.psi DESC ");
6365

6466
// A pragma query for sqlite
6567
compare(__LINE__,

tests/Select.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,7 @@ int Select(int, char* [])
160160
s.offset.set(3u);
161161
s.group_by.add(t.beta);
162162
s.order_by.add(t.beta.asc());
163+
s.order_by.add(t.delta.order(sqlpp::sort_type::desc));
163164
for (const auto& row : db(s))
164165
{
165166
int64_t a = row.alpha;

0 commit comments

Comments
 (0)