Skip to content

Commit

Permalink
only create a single include filter object per nested include #259
Browse files Browse the repository at this point in the history
  • Loading branch information
Viktor Bozhinov committed Dec 9, 2021
1 parent cd0a86e commit d2b3826
Showing 1 changed file with 12 additions and 1 deletion.
13 changes: 12 additions & 1 deletion datagateway_api/src/search_api/query_filter_factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -131,8 +131,8 @@ def get_include_filter(filter_input):
query_filters = []
for related_model in filter_input:
included_entity = related_model["relation"]
query_filters.append(SearchAPIIncludeFilter(included_entity))

nested_include = False
if "scope" in related_model:
# Scope filter can have WHERE, INCLUDE, LIMIT and SKIP filters
scope_query_filters = SearchAPIQueryFilterFactory.get_query_filter(
Expand All @@ -146,8 +146,19 @@ def get_include_filter(filter_input):
SearchAPIQueryFilterFactory.prefix_where_filter_field_with_entity_name( # noqa: B950
scope_query_filter, included_entity,
)
if isinstance(scope_query_filter, SearchAPIIncludeFilter):
nested_include = True
included_filter = scope_query_filter.included_filters[0]

scope_query_filter.included_filters[
0
] = f"{included_entity}.{included_filter}"

query_filters.extend(scope_query_filters)

if not nested_include:
query_filters.append(SearchAPIIncludeFilter(included_entity))

return query_filters

@staticmethod
Expand Down

0 comments on commit d2b3826

Please sign in to comment.