You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

32 lines
1.4 KiB

from ITOA.setup_logging import logger
from itsi.itsi_utils import ITOAInterfaceUtils
def construct_filter_with_in_operator(session_key,
entity_keys,
field_name,
transaction_id=None,
log_prefix='[DuplicateEntitiesManager.util]'):
"""
Construct filter for get_bulk function using $in/$or operator per is_in_operator_supported function
:param session_key: Session key to retrieve in_operator_support
:param entity_keys: List of entity keys to be constructed
:param field_name: The field name used to generate filter key
:param transaction_id: Current transaction id
:param log_prefix: Provided log_prefix in log messages
:return: filter object
"""
is_in_operator_supported = ITOAInterfaceUtils.check_for_in_operator_support(session_key)
entity_key_filter = {}
logger.info(f'tid={transaction_id} {log_prefix}'
f' Generate filter of $in/$or operator, is_in_operator_supported={is_in_operator_supported}')
if is_in_operator_supported:
entity_key_filter = {field_name: {'$in': entity_keys}}
else:
entity_key_filter = {'$or': [{field_name: key} for key in entity_keys]}
logger.debug(f'tid={transaction_id} {log_prefix} get_bulk filter generated, filter={entity_key_filter}')
return entity_key_filter