Skip to content

Commit fb00e4d

Browse files
Adjust MySQL Query Building for the new OrderBy and fix OrderBy test
1 parent 0037a3a commit fb00e4d

File tree

4 files changed

+39
-9
lines changed

4 files changed

+39
-9
lines changed

src/main/java/org/javawebstack/orm/query/QueryOrderBy.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package org.javawebstack.orm.query;
22

3+
import org.javawebstack.orm.TableInfo;
4+
35
import java.util.LinkedList;
4-
import java.util.List;
6+
import java.util.stream.Collectors;
57

68
public class QueryOrderBy extends LinkedList<QueryOrderByElement>{
79

@@ -25,4 +27,15 @@ public boolean add(QueryOrderByElement element) {
2527
private boolean willOverwrite(QueryOrderByElement element) {
2628
return this.stream().anyMatch(element::hasEqualColumn);
2729
}
30+
31+
@Override
32+
public String toString() {
33+
return toString(null);
34+
}
35+
36+
public String toString(TableInfo info) {
37+
return this.stream()
38+
.map(QueryOrderByElement::toString)
39+
.collect(Collectors.joining(","));
40+
}
2841
}

src/main/java/org/javawebstack/orm/query/QueryOrderByElement.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
package org.javawebstack.orm.query;
22

3+
import org.javawebstack.orm.TableInfo;
4+
35
import java.util.Objects;
46

57
public class QueryOrderByElement {
6-
private QueryColumn queryColumn;
7-
private boolean desc;
8+
private final QueryColumn queryColumn;
9+
private final boolean desc;
810

911
QueryOrderByElement(String columnName, boolean desc) {
1012
queryColumn = new QueryColumn(columnName);
@@ -50,4 +52,17 @@ public boolean equals(Object o) {
5052
public int hashCode() {
5153
return Objects.hash(getQueryColumn(), isDesc());
5254
}
55+
56+
@Override
57+
public String toString() {
58+
return this.toString(null);
59+
}
60+
61+
public String toString(TableInfo info) {
62+
String stringifiedOrderBy = getQueryColumn().toString(info);
63+
if (isDesc())
64+
stringifiedOrderBy += " DESC";
65+
66+
return stringifiedOrderBy;
67+
}
5368
}

src/main/java/org/javawebstack/orm/wrapper/builder/MySQLQueryStringBuilder.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,11 +50,13 @@ public SQLQueryString buildQuery(Query<?> query, boolean count) {
5050
sb.append(" WHERE ").append(qs.getQuery());
5151
parameters.addAll(qs.getParameters());
5252
}
53-
if (query.getOrder() != null) {
54-
sb.append(" ORDER BY ").append(query.getOrder().toString(repo.getInfo()));
55-
if (query.isDescOrder())
56-
sb.append(" DESC");
53+
54+
QueryOrderBy orderBy = query.getOrder();
55+
if (!orderBy.isEmpty()) {
56+
sb.append(" ORDER BY ")
57+
.append(orderBy.toString());
5758
}
59+
5860
Integer offset = query.getOffset();
5961
Integer limit = query.getLimit();
6062
if (offset != null && limit == null)

src/test/java/org/javawebstack/orm/test/querybuilding/OrderByClauseTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@ void testMultipleOrderByClausesOfASCOrder() {
6565
@Test
6666
void testMultipleOrderByClausesOfDESCOrder() {
6767
Query<Datatype> query = setUpModel(Datatype.class).query()
68-
.order("wrapper_integer")
69-
.order("primitive_integer");
68+
.order("wrapper_integer", true)
69+
.order("primitive_integer", true);
7070

7171
new QueryVerification(query)
7272
.assertSectionContains("ORDER BY", "`wrapper_integer` DESC")

0 commit comments

Comments
 (0)