Skip to content

Commit 683b5a9

Browse files
refactor: add a way to rebuild a rs request with new filters (#123)
1 parent bc29e73 commit 683b5a9

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed

hypertrace-core-graphql-common-schema/src/main/java/org/hypertrace/core/graphql/common/request/DefaultResultSetRequestBuilder.java

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,6 +188,40 @@ public Single<ResultSetRequest<OrderArgument>> build(
188188
Optional.empty()));
189189
}
190190

191+
@Override
192+
public <O extends OrderArgument> Single<ResultSetRequest<O>> rebuildWithAdditionalFilters(
193+
ResultSetRequest<O> originalRequest, Collection<FilterArgument> additionalFilters) {
194+
return this.mergeFilterLists(
195+
originalRequest.context(),
196+
originalRequest.idAttribute().attributeExpressionAssociation().attribute().scope(),
197+
originalRequest.filterArguments(),
198+
additionalFilters)
199+
.map(
200+
mergedFilters ->
201+
new DefaultResultSetRequest<>(
202+
originalRequest.context(),
203+
originalRequest.attributes(),
204+
originalRequest.idAttribute(),
205+
originalRequest.timeRange(),
206+
originalRequest.limit(),
207+
originalRequest.offset(),
208+
originalRequest.orderArguments(),
209+
mergedFilters,
210+
originalRequest.spaceId()));
211+
}
212+
213+
private Single<List<AttributeAssociation<FilterArgument>>> mergeFilterLists(
214+
GraphQlRequestContext requestContext,
215+
String scope,
216+
Collection<AttributeAssociation<FilterArgument>> original,
217+
Collection<FilterArgument> additional) {
218+
return this.filterRequestBuilder
219+
.build(requestContext, scope, additional)
220+
.flattenAsObservable(list -> list)
221+
.concatWith(Observable.fromIterable(original))
222+
.toList();
223+
}
224+
191225
private Observable<AttributeRequest> getAttributeRequests(
192226
GraphQlRequestContext context,
193227
String requestScope,

hypertrace-core-graphql-common-schema/src/main/java/org/hypertrace/core/graphql/common/request/ResultSetRequestBuilder.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,9 @@ <O extends OrderArgument> Single<ResultSetRequest<O>> build(
3939
Stream<SelectedField> attributeQueryableFields,
4040
Optional<String> spaceId);
4141

42+
<O extends OrderArgument> Single<ResultSetRequest<O>> rebuildWithAdditionalFilters(
43+
ResultSetRequest<O> originalRequest, Collection<FilterArgument> additionalFilters);
44+
4245
Single<ResultSetRequest<OrderArgument>> build(
4346
GraphQlRequestContext context,
4447
String requestScope,

0 commit comments

Comments
 (0)