Skip to content
This repository has been archived by the owner on Jun 26, 2024. It is now read-only.

Commit

Permalink
fix: fetching total from EDS (#64)
Browse files Browse the repository at this point in the history
* fix: set total in data fetcher node

* fix: fetching total from eds

* fix tests
  • Loading branch information
skjindal93 authored Jan 12, 2021
1 parent fdb6c21 commit 0e5ea7d
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -183,6 +183,16 @@ public EntityFetcherResponse getTimeAggregatedMetrics(

@Override
public int getTotalEntities(EntitiesRequestContext requestContext, EntitiesRequest entitiesRequest) {
throw new UnsupportedOperationException("Fetching total entities not supported by EDS");
EntityFetcherResponse entityFetcherResponse = getEntities(
requestContext,
EntitiesRequest.newBuilder(entitiesRequest)
.clearSelection()
.clearTimeAggregation()
.clearOrderBy()
.clearLimit()
.setOffset(0)
.build()
);
return entityFetcherResponse.size();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -182,6 +182,13 @@ private QueryNode buildExecutionTreeForEdsFilterAndSelection() {

QueryNode rootNode = new DataFetcherNode(EDS.name(), filter, selectionLimit, selectionOffset, orderBys);
executionContext.setSortAndPaginationNodeAdded(true);

if (ExecutionTreeUtils.hasEntityIdEqualsFilter(executionContext)) {
executionContext.setTotal(1);
} else {
rootNode = new TotalFetcherNode(rootNode, EDS.name());
}

return rootNode;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -176,17 +176,6 @@ public void test_getEntities_WithoutPagination() {
entityDataServiceEntityFetcher.getEntities(entitiesRequestContext, entitiesRequest).size());
}

@Test
public void test_getTotalEntities() {
assertThrows(
UnsupportedOperationException.class,
() -> {
entityDataServiceEntityFetcher.getTotalEntities(
new EntitiesRequestContext(TENANT_ID, 0, 1, "API", "API.startTime", Map.of()),
EntitiesRequest.newBuilder().build());
});
}

@Test
public void test_getAggregatedMetrics() {
assertThrows(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -435,13 +435,16 @@ public void testExecutionTreeBuilderWithSelectFilterOrderPagination() {
ExecutionTreeBuilder executionTreeBuilder = new ExecutionTreeBuilder(executionContext);
QueryNode executionTree = executionTreeBuilder.build();
assertNotNull(executionTree);
assertTrue(executionTree instanceof TotalFetcherNode);
assertEquals("EDS", ((TotalFetcherNode) executionTree).getSource());

assertTrue(executionTree instanceof DataFetcherNode);
assertEquals("EDS", ((DataFetcherNode) executionTree).getSource());
assertEquals(20, ((DataFetcherNode) executionTree).getOffset());
assertEquals(10, ((DataFetcherNode) executionTree).getLimit());
QueryNode childNode = ((TotalFetcherNode) executionTree).getChildNode();
assertTrue(childNode instanceof DataFetcherNode);
assertEquals("EDS", ((DataFetcherNode) childNode).getSource());
assertEquals(20, ((DataFetcherNode) childNode).getOffset());
assertEquals(10, ((DataFetcherNode) childNode).getLimit());
assertEquals(
List.of(orderByExpression), ((DataFetcherNode) executionTree).getOrderByExpressionList());
List.of(orderByExpression), ((DataFetcherNode) childNode).getOrderByExpressionList());
}

{
Expand Down Expand Up @@ -497,10 +500,14 @@ public void testExecutionTreeBuilderWithSelectPagination() {
ExecutionTreeBuilder executionTreeBuilder = new ExecutionTreeBuilder(executionContext);
QueryNode executionTree = executionTreeBuilder.build();
assertNotNull(executionTree);
assertTrue(executionTree instanceof DataFetcherNode);
assertEquals(10, ((DataFetcherNode)executionTree).getLimit());
assertEquals(20, ((DataFetcherNode)executionTree).getOffset());
assertEquals(List.of(), ((DataFetcherNode)executionTree).getOrderByExpressionList());
assertTrue(executionTree instanceof TotalFetcherNode);
assertEquals("EDS", ((TotalFetcherNode) executionTree).getSource());

QueryNode childNode = ((TotalFetcherNode) executionTree).getChildNode();
assertTrue(childNode instanceof DataFetcherNode);
assertEquals(10, ((DataFetcherNode)childNode).getLimit());
assertEquals(20, ((DataFetcherNode)childNode).getOffset());
assertEquals(List.of(), ((DataFetcherNode)childNode).getOrderByExpressionList());
}

@Test
Expand Down

0 comments on commit 0e5ea7d

Please sign in to comment.