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