in modular_sdk/services/parent_service.py [0:0]
def i_get_parent_by_customer(self, customer_id: str,
parent_type: Optional[Union[ParentType, List[ParentType]]] = None, # noqa
is_deleted: Optional[bool] = None,
meta_conditions: Optional[Condition] = None,
limit: Optional[int] = None,
last_evaluated_key: Optional[dict] = None
) -> Iterator[Parent]:
"""
Meta conditions can be used like this:
parent = next(parent_service.i_get_parent_by_customer(
customer_id='EPAM Systems',
parent_type='CUSTODIAN',
is_deleted=False,
meta_conditions=(Parent.meta['key'] == 'value'),
limit=1
), None)
:param customer_id:
:param parent_type:
:param is_deleted:
:param meta_conditions:
:param limit:
:param last_evaluated_key:
:return:
"""
condition = meta_conditions
rkc = None
if isinstance(parent_type, list):
condition &= (Parent.type.is_in(*parent_type))
elif parent_type: # enum value or str
rkc = Parent.type_scope.startswith(
self.build_type_scope(parent_type)
)
if isinstance(is_deleted, bool):
condition &= (Parent.is_deleted == is_deleted)
return Parent.customer_id_scope_index.query(
hash_key=customer_id,
range_key_condition=rkc,
filter_condition=condition,
limit=limit,
last_evaluated_key=last_evaluated_key
)