Class: ROM::Solr::PaginatedDataset

Inherits:
Object
  • Object
show all
Defined in:
lib/rom/solr/paginated_dataset.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#datasetObject (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_markObject



32
33
34
# File 'lib/rom/solr/paginated_dataset.rb', line 32

def cursor_mark
  dataset.params[:cursorMark]
end

#eachObject



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

Returns:

  • (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

Returns:

  • (Boolean)


56
57
58
# File 'lib/rom/solr/paginated_dataset.rb', line 56

def last_page?
  one_page? || last_cursor?
end

#next_cursor_markObject



36
37
38
# File 'lib/rom/solr/paginated_dataset.rb', line 36

def next_cursor_mark
  dataset.response['nextCursorMark']
end

#one_page?Boolean

Returns:

  • (Boolean)


52
53
54
# File 'lib/rom/solr/paginated_dataset.rb', line 52

def one_page?
  total_size <= page_size
end

#page_sizeObject



40
41
42
# File 'lib/rom/solr/paginated_dataset.rb', line 40

def page_size
  dataset.params[:rows]
end

#total_sizeObject



44
45
46
# File 'lib/rom/solr/paginated_dataset.rb', line 44

def total_size
  dataset.num_found
end