Skip to content
This repository was archived by the owner on Aug 1, 2025. It is now read-only.

Commit ec4055a

Browse files
committed
Add default sort to all SearchQueryBuilder queries on entity id.
If not specified, this sort will be used to keep the endpoints idempotent.
1 parent cc5d9c6 commit ec4055a

File tree

3 files changed

+17
-2
lines changed

3 files changed

+17
-2
lines changed

src/main/java/io/swagger/model/SearchRequest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import com.fasterxml.jackson.annotation.JsonIgnore;
44
import com.fasterxml.jackson.annotation.JsonProperty;
5+
import io.swagger.model.core.SortBy;
6+
import io.swagger.model.core.SortOrder;
57

68
import java.util.ArrayList;
79
import java.util.List;

src/main/java/org/brapi/test/BrAPITestServer/service/SearchQueryBuilder.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,22 @@ public SearchQueryBuilder(Class<T> clazz) {
3232
}
3333

3434
public String getQuery() {
35+
if (sortClause.isBlank()) {
36+
// By default, sort on entity id to have query result remain idempotent
37+
sortClause = " ORDER BY entity.id ASC ";
38+
}
39+
3540
return selectClause + whereClause + sortClause;
3641
}
3742

38-
public String getIdQuery() { return selectOnlyIds + whereClause + sortClause;}
43+
public String getIdQuery() {
44+
if (sortClause.isBlank()) {
45+
// By default, sort on entity id to have query result remain idempotent
46+
sortClause = " ORDER BY entity.id ASC ";
47+
}
48+
49+
return selectOnlyIds + whereClause + sortClause;
50+
}
3951

4052
public Map<String, Object> getParams() {
4153
return params;

src/main/java/org/brapi/test/BrAPITestServer/service/germ/GermplasmService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import java.util.*;
55
import java.util.stream.Collectors;
66

7+
import io.swagger.model.core.SortOrder;
78
import io.swagger.model.germ.*;
89
import jakarta.validation.Valid;
910

@@ -137,7 +138,7 @@ public Page<GermplasmEntity> findGermplasmEntities(@Valid GermplasmSearchRequest
137138
"*institute.instituteCode");
138139
}
139140

140-
searchQuery.withExRefs(request.getExternalReferenceIDs(), request.getExternalReferenceSources())
141+
searchQuery.withExRefs(request.getExternalReferenceIDs(), request.getExternalReferenceSources())
141142
.appendList(request.getAccessionNumbers(), "accessionNumber")
142143
.appendList(request.getCollections(), "collection")
143144
.appendList(request.getCommonCropNames(), "crop.cropName").appendList(request.getGermplasmDbIds(), "id")

0 commit comments

Comments
 (0)