From 865bf977623d93018a653aa13d0b9ea74c91041e Mon Sep 17 00:00:00 2001 From: Viktor Bozhinov Date: Fri, 26 Nov 2021 10:52:19 +0000 Subject: [PATCH] use OR boolean operator for WHERE filters in text operator #259 --- .../src/search_api/query_filter_factory.py | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/datagateway_api/src/search_api/query_filter_factory.py b/datagateway_api/src/search_api/query_filter_factory.py index 1366ab75..c071abc6 100644 --- a/datagateway_api/src/search_api/query_filter_factory.py +++ b/datagateway_api/src/search_api/query_filter_factory.py @@ -87,16 +87,19 @@ def get_where_filter(filter_input, entity_name): } try: + or_conditional_filters = [] field_names = text_operator_fields[entity_name] for field_name in field_names: - where_filter = { - "filter": {"where": {field_name: filter_input["text"]}}, - } - where_filters.extend( - SearchAPIQueryFilterFactory.get_query_filter( - where_filter, entity_name, - ), - ) + or_conditional_filters.append({field_name: filter_input["text"]}) + + where_filter = { + "filter": {"where": {"or": or_conditional_filters}}, + } + where_filters.extend( + SearchAPIQueryFilterFactory.get_query_filter( + where_filter, entity_name, + ), + ) except KeyError: # Do not raise FilterError nor attempt to create filters. Simply # ignore text operator queries on fields that are not part of the