Skip to content

Commit 7edb811

Browse files
committed
DOPE-260: add support for ordering by multiple OrderExpressions
1 parent 991edff commit 7edb811

2 files changed

Lines changed: 14 additions & 1 deletion

File tree

core/src/main/kotlin/ch/ergon/dope/resolvable/clause/ISelectClause.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,8 @@ interface ISelectOrderByClause<T : ValidType> : ISelectLimitClause<T> {
4545
}
4646

4747
interface ISelectGroupByClause<T : ValidType> : ISelectOrderByClause<T> {
48-
fun orderBy(orderExpression: OrderExpression) = SelectOrderByClause(orderExpression, parentClause = this)
48+
fun orderBy(orderExpression: OrderExpression, vararg additionalOrderExpressions: OrderExpression) =
49+
SelectOrderByClause(orderExpression, *additionalOrderExpressions, parentClause = this)
4950
fun orderBy(expression: TypeExpression<out ValidType>, orderByType: OrderByType? = null) = orderBy(OrderExpression(expression, orderByType))
5051
}
5152

core/src/test/kotlin/ch/ergon/dope/resolvable/clause/OrderByClauseTest.kt

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,18 @@ class OrderByClauseTest : ManagerDependentTest {
257257
assertEquals(expected.toDopeQuery(manager), actual.toDopeQuery(manager))
258258
}
259259

260+
@Test
261+
fun `should support order by function with multiple orderExpressions`() {
262+
val parentClause = someSelectClause()
263+
val orderExpression1 = OrderExpression(someStringField())
264+
val orderExpression2 = OrderExpression(someNumberField(), ASC)
265+
val expected = SelectOrderByClause(orderExpression1, orderExpression2, parentClause = parentClause)
266+
267+
val actual = parentClause.orderBy(orderExpression1, orderExpression2)
268+
269+
assertEquals(expected.toDopeQuery(manager), actual.toDopeQuery(manager))
270+
}
271+
260272
@Test
261273
fun `should support order by function with then order by with orderExpression`() {
262274
val stringField = someStringField()

0 commit comments

Comments
 (0)