Class: DevRuby::Collection

Inherits:
Object
  • Object
show all
Defined in:
lib/dev_ruby/collection.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(data:, page:, per_page:) ⇒ Collection

Returns a new instance of Collection.



13
14
15
16
17
18
19
# File 'lib/dev_ruby/collection.rb', line 13

def initialize(data:, page:, per_page:)
  @data = data
  @page = page
  @per_page = per_page
  @next_page = data.count.positive? ? (page + 1) : nil
  @prev_page = page.positive? ? (page - 1) : nil
end

Instance Attribute Details

#dataObject (readonly)

Returns the value of attribute data.



5
6
7
# File 'lib/dev_ruby/collection.rb', line 5

def data
  @data
end

#next_pageObject (readonly)

Returns the value of attribute next_page.



5
6
7
# File 'lib/dev_ruby/collection.rb', line 5

def next_page
  @next_page
end

#pageObject (readonly)

Returns the value of attribute page.



5
6
7
# File 'lib/dev_ruby/collection.rb', line 5

def page
  @page
end

#per_pageObject (readonly)

Returns the value of attribute per_page.



5
6
7
# File 'lib/dev_ruby/collection.rb', line 5

def per_page
  @per_page
end

#prev_pageObject (readonly)

Returns the value of attribute prev_page.



5
6
7
# File 'lib/dev_ruby/collection.rb', line 5

def prev_page
  @prev_page
end

Class Method Details

.from_response(response:, type:, params:) ⇒ Object



7
8
9
10
11
# File 'lib/dev_ruby/collection.rb', line 7

def self.from_response(response:, type:, params:)
  new(data: response.body.map { |attrs| type.new(attrs) },
      page: params[:page],
      per_page: params[:per_page])
end