Skip to content

Commit 86e1566

Browse files
committed
DEVX-714: adding graphQLOrders function and graphQLAllOrders example
1 parent e8e0a31 commit 86e1566

2 files changed

Lines changed: 53 additions & 0 deletions

File tree

commercetools/commercetools-graphql-api/src/main/java/com/commercetools/graphql/api/ByProjectKeyGraphqlQuery.java

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,11 @@
88
import java.util.concurrent.CompletableFuture;
99

1010
import com.commercetools.api.client.ErrorableTrait;
11+
import com.commercetools.graphql.CommercetoolsTestUtils;
1112

13+
import com.commercetools.api.client.ProjectApiRoot;
14+
import com.commercetools.graphql.api.types.Order;
15+
import com.commercetools.graphql.api.types.OrderQueryResult;
1216
import io.vrap.rmf.base.client.*;
1317

1418
import org.apache.commons.lang3.builder.EqualsBuilder;
@@ -73,6 +77,29 @@ public CompletableFuture<ApiHttpResponse<GraphQLResponse<T>>> execute(final ApiH
7377
.withBody(graphQLDataResponse -> GraphQLResponse.of(response.getBody(), graphQLRequest)));
7478
}
7579

80+
public List<Order> graphQLOrders(int limit) {
81+
final ProjectApiRoot projectRoot = CommercetoolsTestUtils.getProjectApiRoot();
82+
List<com.commercetools.graphql.api.types.Order> allOrders = new ArrayList<>();
83+
boolean limitNotReached = true;
84+
String lastId = null;
85+
while (limitNotReached) {
86+
GraphQLRequestBuilder<OrderQueryResult> orderBuilder = GraphQL.query(
87+
"query { orders { results { id, version } } }").dataMapper(GraphQLData::getOrders);
88+
89+
if (lastId != null)
90+
orderBuilder.variables(builder -> builder.addValue("where", "id > lastId"));
91+
92+
var result = projectRoot.graphql().query(orderBuilder.build()).executeBlocking();
93+
var orders = result.getBody().getData().getResults();
94+
allOrders.addAll(orders);
95+
var length = orders.size();
96+
lastId = result.getBody().getData().getResults().get(length - 1).getId();
97+
98+
limitNotReached = length >= limit;
99+
}
100+
return allOrders;
101+
}
102+
76103
public String getProjectKey() {
77104
return this.projectKey;
78105
}

commercetools/internal-docs/src/test/java/example/ExamplesTest.java

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,11 @@
3535
import com.commercetools.api.models.product_type.AttributeLocalizedEnumValue;
3636
import com.commercetools.api.models.project.Project;
3737
import com.commercetools.api.models.tax_category.TaxCategoryPagedQueryResponse;
38+
import com.commercetools.graphql.CommercetoolsTestUtils;
39+
import com.commercetools.graphql.api.GraphQL;
40+
import com.commercetools.graphql.api.GraphQLData;
41+
import com.commercetools.graphql.api.GraphQLRequestBuilder;
42+
import com.commercetools.graphql.api.types.OrderQueryResult;
3843
import com.commercetools.http.apachehttp.CtApacheHttpClient;
3944
import com.commercetools.http.javanet.CtJavaNetHttpClient;
4045
import com.commercetools.http.netty.CtNettyHttpClient;
@@ -379,6 +384,27 @@ public void queryAll() {
379384
.join();
380385
}
381386

387+
public void graphQLAllOrders() {
388+
final ProjectApiRoot projectRoot = CommercetoolsTestUtils.getProjectApiRoot();
389+
boolean limitNotReached = true;
390+
int limit = 10;
391+
String lastId = null;
392+
while (limitNotReached) {
393+
GraphQLRequestBuilder<OrderQueryResult> orderBuilder = GraphQL.query(
394+
"query { orders { results { id, version } } }").dataMapper(GraphQLData::getOrders);
395+
396+
if (lastId != null)
397+
orderBuilder.variables(builder -> builder.addValue("where", "id > lastId"));
398+
399+
var result = projectRoot.graphql().query(orderBuilder.build()).executeBlocking();
400+
var orders = result.getBody().getData().getResults();
401+
var length = orders.size();
402+
lastId = result.getBody().getData().getResults().get(length - 1).getId();
403+
404+
limitNotReached = length >= limit;
405+
}
406+
}
407+
382408
public void middleware() {
383409
ProjectApiRoot apiRoot = ApiRootBuilder.of()
384410
.defaultClient(ClientCredentials.of()

0 commit comments

Comments
 (0)