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
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
|