def query_object_metadata_index()

in CommonLayerCode/datalake-library/python/datalake_library/interfaces/dynamo_interface.py [0:0]


    def query_object_metadata_index(self, index, key_expression, key_value, filter_expression, filter_value, max_items):
        try:
            items = []
            response = self.object_metadata_table.query(
                IndexName=index,
                KeyConditionExpression=Key(key_expression).eq(key_value),
                FilterExpression=Attr(filter_expression).eq(filter_value)
            )
            if response['Items']:
                items.extend(response['Items'])
            while 'LastEvaluatedKey' in response: 
                response = self.object_metadata_table.query(
                    IndexName=index,
                    KeyConditionExpression=Key(key_expression).eq(key_value),
                    FilterExpression=Attr(filter_expression).eq(filter_value),
                    ExclusiveStartKey=response['LastEvaluatedKey']           
                )
                if response['Items']: 
                    items.extend(response['Items'])
                if len(items) > max_items:
                    items = items[:max_items]
                    break
        except ClientError:
            msg = 'Error querying object metadata {} index'.format(index)
            self._logger.exception(msg)
            raise
        return items