Class: ROM::Solr::PaginatedDataset
- Inherits:
-
Object
- Object
- ROM::Solr::PaginatedDataset
- Defined in:
- lib/rom/solr/paginated_dataset.rb
Instance Attribute Summary collapse
-
#dataset ⇒ Object
readonly
Returns the value of attribute dataset.
Instance Method Summary collapse
- #cursor_mark ⇒ Object
- #each ⇒ Object
-
#initialize(dataset) ⇒ PaginatedDataset
constructor
A new instance of PaginatedDataset.
- #last_cursor? ⇒ Boolean
- #last_page? ⇒ Boolean
- #next_cursor_mark ⇒ Object
- #one_page? ⇒ Boolean
- #page_size ⇒ Object
- #total_size ⇒ Object
Constructor Details
#initialize(dataset) ⇒ PaginatedDataset
Returns a new instance of PaginatedDataset.
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
# File 'lib/rom/solr/paginated_dataset.rb', line 7 def initialize(dataset) ds = dataset .default_params(rows: 20) .remove_params(:start) .add_params(cursorMark: '*') if ds.param?(:sort) unless ds.params[:sort] =~ /\bid\b/ ds = ds.sort('%{sort},id ASC' % ds.params) end else ds = ds.sort('id ASC') end @dataset = ds end |
Instance Attribute Details
#dataset ⇒ Object (readonly)
Returns the value of attribute dataset.
5 6 7 |
# File 'lib/rom/solr/paginated_dataset.rb', line 5 def dataset @dataset end |
Instance Method Details
#cursor_mark ⇒ Object
32 33 34 |
# File 'lib/rom/solr/paginated_dataset.rb', line 32 def cursor_mark dataset.params[:cursorMark] end |
#each ⇒ Object
24 25 26 27 28 29 30 |
# File 'lib/rom/solr/paginated_dataset.rb', line 24 def each while true yield dataset break if last_page? @dataset = dataset.add_params(cursorMark: next_cursor_mark) end end |
#last_cursor? ⇒ Boolean
48 49 50 |
# File 'lib/rom/solr/paginated_dataset.rb', line 48 def last_cursor? cursor_mark == next_cursor_mark end |
#last_page? ⇒ Boolean
56 57 58 |
# File 'lib/rom/solr/paginated_dataset.rb', line 56 def last_page? one_page? || last_cursor? end |
#next_cursor_mark ⇒ Object
36 37 38 |
# File 'lib/rom/solr/paginated_dataset.rb', line 36 def next_cursor_mark dataset.response['nextCursorMark'] end |
#one_page? ⇒ Boolean
52 53 54 |
# File 'lib/rom/solr/paginated_dataset.rb', line 52 def one_page? total_size <= page_size end |
#page_size ⇒ Object
40 41 42 |
# File 'lib/rom/solr/paginated_dataset.rb', line 40 def page_size dataset.params[:rows] end |
#total_size ⇒ Object
44 45 46 |
# File 'lib/rom/solr/paginated_dataset.rb', line 44 def total_size dataset.num_found end |