Class: Plurall::Administrators

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/plurall/administrators.rb

Overview

Public: A list of school administrators that supports pagination.

Examples

Plurall.administrators(school_id: 123456).each do |administrator|
  puts administrator.name
end

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(response) ⇒ Administrators

Internal: Create a new object from a GraphQL API response.

response - The GraphQL API response as a GraphQL::Client::Response.



22
23
24
# File 'lib/plurall/administrators.rb', line 22

def initialize response
  @response = response
end

Instance Attribute Details

#responseObject (readonly)

Internal: Returns the GraphQL API response as a GraphQL::Client::Response.



15
16
17
# File 'lib/plurall/administrators.rb', line 15

def response
  @response
end

Instance Method Details

#all(&block) ⇒ Object

Public: Iterates all administrators.

Several API calls may be made to retrieve all by repeatedly calling #next until #next? returns ‘false`.

Examples

Plurall.administrators(school_id: 123456).all do |administrator|
  puts administrator.name
end

Yields an administrator object to the block.

Returns an Enumerator when no block argument is given, or nothing when when a block argument is given.



78
79
80
81
82
83
84
85
86
87
# File 'lib/plurall/administrators.rb', line 78

def all &block
  return enum_for :all unless block

  page = self
  loop do
    page.each(&block)
    page = page.next
    break if page.nil?
  end
end

#dataObject

Public: Returns the list of administrators as a Hash.



34
35
36
# File 'lib/plurall/administrators.rb', line 34

def data
  response.data.to_h
end

#each(&block) ⇒ Object

Public: Iterates the list of administrators.

Examples

Plurall.administrators(school_id: 123456).each do |administrator|
  puts administrator.name
end

Yields an administrator object to the block.

Returns an Enumerator when no block argument is given, or nothing when when a block argument is given.



57
58
59
60
61
# File 'lib/plurall/administrators.rb', line 57

def each &block
  return enum_for :each unless block

  school_node.administrators.edges.lazy.map(&:node).each(&block)
end

#inspectObject

Internal: Returns a string representation of the list.



171
172
173
# File 'lib/plurall/administrators.rb', line 171

def inspect
  "#<#{self.class.name}:0x#{(object_id * 2).to_s(16).rjust(16, "0")} administrators:#{total_count}>"
end

#nextObject

Public: Retrieve the next page of administrators.

Returns the next page as Plurall::Administrators, or nil.



119
120
121
122
123
124
# File 'lib/plurall/administrators.rb', line 119

def next
  return nil unless next?

  next_response = Plurall::Api.administrators school_id: school_id, after: next_cursor
  self.class.new next_response
end

#next?Boolean

Public: Whether there are more administrators available.

Examples

administrators = Plurall.administrators school_id: 123456
administrators.next?

Returns true or false.

Returns:

  • (Boolean)


99
100
101
# File 'lib/plurall/administrators.rb', line 99

def next?
  administrators_page_info.has_next_page
end

#next_cursorObject

Internal: The next cursor used for pagination.

Returns the next cursor as a String, or nil.



108
109
110
111
112
# File 'lib/plurall/administrators.rb', line 108

def next_cursor
  return nil unless next?

  administrators_page_info.end_cursor
end

#prevObject

Public: Retrieve the previous page of administrators.

Examples

administrators = Plurall.administrators school_id: 123456
prev_administrators = administrators.prev

Returns the previous page as Plurall::Administrators, or nil.



161
162
163
164
165
166
# File 'lib/plurall/administrators.rb', line 161

def prev
  return nil unless prev?

  prev_response = Plurall::Api.administrators school_id: school_id, before: prev_cursor
  self.class.new prev_response
end

#prev?Boolean

Public: Whether there are previous administrators available.

Examples

administrators = Plurall.administrators school_id: 123456
administrators.prev?

Returns true or false.

Returns:

  • (Boolean)


136
137
138
# File 'lib/plurall/administrators.rb', line 136

def prev?
  administrators_page_info.has_previous_page
end

#prev_cursorObject

Internal: The previous cursor used for pagination.

Returns the previous cursor as a String, or nil.



145
146
147
148
149
# File 'lib/plurall/administrators.rb', line 145

def prev_cursor
  return nil unless prev?

  administrators_page_info.start_cursor
end

#school_idObject

Public: Returns the school id for list of administrators as a String.



40
41
42
# File 'lib/plurall/administrators.rb', line 40

def school_id
  school_node.id
end

#total_countObject

Public: Returns the number of administrators as an Integer.



28
29
30
# File 'lib/plurall/administrators.rb', line 28

def total_count
  school_node.administrators.total_count
end