def query_with_attributes(domain_name, attributes=[], query_expression = nil, max_number_of_items = nil, next_token = nil, consistent_read = nil)
attributes = attributes.to_a
query_expression = query_expression_from_array(query_expression) if query_expression.is_a?(Array)
@last_query_expression = query_expression
request_params = {'DomainName' => domain_name,
'QueryExpression' => query_expression,
'MaxNumberOfItems' => max_number_of_items,
'NextToken' => next_token,
'ConsistentRead' => consistent_read}
attributes.each_with_index do |attribute, idx|
request_params["AttributeName.#{idx+1}"] = attribute
end
link = generate_request("QueryWithAttributes", request_params)
result = select_response_to_ruby(request_info(link, QSdbQueryWithAttributesParser.new))
return result unless block_given?
begin
break unless yield(result) && result[:next_token]
request_params['NextToken'] = result[:next_token]
link = generate_request("QueryWithAttributes", request_params)
result = select_response_to_ruby(request_info(link, QSdbQueryWithAttributesParser.new))
end while true
rescue Exception
on_exception
end