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