class GraphQL::Relay::KeycloakRepresentationIteratorConnection
Public Instance Methods
cursor_from_node(item)
click to toggle source
# File lib/keycloak/graphql/keycloak_representation_iterator_connection.rb, line 4 def cursor_from_node(item) item_index = paged_nodes.index(item) if item_index.nil? raise("Can't generate cursor, item not found in connection: #{item}") else offset = item_index + (paged_nodes_offset || 0) encode(offset.to_s) end end
first()
click to toggle source
# File lib/keycloak/graphql/keycloak_representation_iterator_connection.rb, line 25 def first return @first if defined? @first @first = get_limited_arg(:first) @first = max_page_size if @first && max_page_size && @first > max_page_size @first end
has_next_page()
click to toggle source
TODO: support `before`
# File lib/keycloak/graphql/keycloak_representation_iterator_connection.rb, line 16 def has_next_page sliced_nodes_count >= (first || max_page_size) end
has_previous_page()
click to toggle source
TODO: support `before`
# File lib/keycloak/graphql/keycloak_representation_iterator_connection.rb, line 21 def has_previous_page false end
last()
click to toggle source
# File lib/keycloak/graphql/keycloak_representation_iterator_connection.rb, line 33 def last return @last if defined? @last @last = get_limited_arg(:last) @last = max_page_size if @last && max_page_size && @last > max_page_size @last end
Private Instance Methods
offset_from_cursor(cursor)
click to toggle source
# File lib/keycloak/graphql/keycloak_representation_iterator_connection.rb, line 94 def offset_from_cursor(cursor) decode(cursor).to_i end
paged_nodes()
click to toggle source
apply first / last limit results @return [Array]
# File lib/keycloak/graphql/keycloak_representation_iterator_connection.rb, line 45 def paged_nodes return @paged_nodes if defined? @paged_nodes items = sliced_nodes if first items.till = items.first + first end if max_page_size && !first && !last items.till = items.first + max_page_size end @paged_nodes_offset = items.first @paged_nodes = items.to_a end
paged_nodes_offset()
click to toggle source
# File lib/keycloak/graphql/keycloak_representation_iterator_connection.rb, line 63 def paged_nodes_offset paged_nodes && @paged_nodes_offset end
relation_limit(iterator)
click to toggle source
# File lib/keycloak/graphql/keycloak_representation_iterator_connection.rb, line 71 def relation_limit(iterator) iterator.till end
relation_offset(iterator)
click to toggle source
# File lib/keycloak/graphql/keycloak_representation_iterator_connection.rb, line 67 def relation_offset(iterator) iterator.first end
sliced_nodes()
click to toggle source
Apply cursors to edges
# File lib/keycloak/graphql/keycloak_representation_iterator_connection.rb, line 76 def sliced_nodes return @sliced_nodes if defined? @sliced_nodes @sliced_nodes = nodes if after @sliced_nodes.first = offset_from_cursor(after) + 1 end @sliced_nodes end
sliced_nodes_count()
click to toggle source
# File lib/keycloak/graphql/keycloak_representation_iterator_connection.rb, line 88 def sliced_nodes_count return @sliced_nodes_count if defined? @sliced_nodes_count @sliced_nodes_count = paged_nodes.size end