Skip to content

Commit 9c20b52

Browse files
committed
refactor
1 parent 0a76df8 commit 9c20b52

File tree

4 files changed

+22
-24
lines changed

4 files changed

+22
-24
lines changed

lib/mongo/scrollable.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ def scroll(cursor_or_type = nil, options = nil, &_block)
1818
raise_mismatched_sort_fields_error!(cursor, cursor_options) if different_sort_fields?(cursor, cursor_options)
1919

2020
records = nil
21-
if cursor.type == :previous && limit
21+
if cursor.type == :previous
2222
# scroll backwards by reversing the sort order, limit and then reverse again
2323
pipeline = [
2424
{ '$match' => view.selector.merge(cursor.criteria) },

lib/mongoid/criteria/scrollable.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ def new_cursor(cursor_type, cursor, cursor_options)
6969
def find_records(criteria, cursor)
7070
cursor_criteria = criteria.dup
7171
cursor_criteria.selector = { '$and' => [criteria.selector, cursor.criteria] }
72-
if cursor.type == :previous && criteria.options[:limit]
72+
if cursor.type == :previous
7373
pipeline = [
7474
{ '$match' => cursor_criteria.selector },
7575
{ '$sort' => { cursor.field_name => -cursor.direction } },

spec/mongo/collection_view_spec.rb

+10-11
Original file line numberDiff line numberDiff line change
@@ -107,26 +107,25 @@
107107
expect(cursor.tiebreak_id).to eq record['_id']
108108
end
109109
it 'can scroll back with the previous cursor' do
110-
cursor = nil
111-
first_previous_cursor = nil
112-
second_previous_cursor = nil
110+
first_iterator = nil
111+
second_iterator = nil
112+
third_iterator = nil
113113

114114
Mongoid.default_client['feed_items'].find.sort(field_name => 1).limit(2).scroll(cursor_type, field_type: field_type) do |_, iterator|
115-
cursor = iterator.next_cursor
115+
first_iterator = iterator
116116
end
117117

118-
Mongoid.default_client['feed_items'].find.sort(field_name => 1).limit(2).scroll(cursor, field_type: field_type) do |_, iterator|
119-
cursor = iterator.next_cursor
120-
first_previous_cursor = iterator.previous_cursor
118+
Mongoid.default_client['feed_items'].find.sort(field_name => 1).limit(2).scroll(first_iterator.next_cursor, field_type: field_type) do |_, iterator|
119+
second_iterator = iterator
121120
end
122121

123-
Mongoid.default_client['feed_items'].find.sort(field_name => 1).limit(2).scroll(cursor, field_type: field_type) do |_, iterator|
124-
second_previous_cursor = iterator.previous_cursor
122+
Mongoid.default_client['feed_items'].find.sort(field_name => 1).limit(2).scroll(second_iterator.next_cursor, field_type: field_type) do |_, iterator|
123+
third_iterator = iterator
125124
end
126125

127126
records = Mongoid.default_client['feed_items'].find.sort(field_name => 1)
128-
expect(Mongoid.default_client['feed_items'].find.sort(field_name => 1).limit(2).scroll(first_previous_cursor, field_type: field_type).to_a).to eq(records.limit(2).to_a)
129-
expect(Mongoid.default_client['feed_items'].find.sort(field_name => 1).limit(2).scroll(second_previous_cursor, field_type: field_type).to_a).to eq(records.skip(2).limit(2).to_a)
127+
expect(Mongoid.default_client['feed_items'].find.sort(field_name => 1).limit(2).scroll(second_iterator.previous_cursor, field_type: field_type).to_a).to eq(records.limit(2).to_a)
128+
expect(Mongoid.default_client['feed_items'].find.sort(field_name => 1).limit(2).scroll(third_iterator.previous_cursor, field_type: field_type).to_a).to eq(records.skip(2).limit(2).to_a)
130129
end
131130
end
132131
end

spec/mongoid/criteria_spec.rb

+10-11
Original file line numberDiff line numberDiff line change
@@ -161,26 +161,25 @@
161161
end
162162
end
163163
it 'can scroll back with the previous cursor' do
164-
cursor = nil
165-
first_previous_cursor = nil
166-
second_previous_cursor = nil
164+
first_iterator = nil
165+
second_iterator = nil
166+
third_iterator = nil
167167

168168
Feed::Item.asc(field_name).limit(2).scroll(cursor_type) do |_, iterator|
169-
cursor = iterator.next_cursor
169+
first_iterator = iterator
170170
end
171171

172-
Feed::Item.asc(field_name).limit(2).scroll(cursor) do |_, iterator|
173-
cursor = iterator.next_cursor
174-
first_previous_cursor = iterator.previous_cursor
172+
Feed::Item.asc(field_name).limit(2).scroll(first_iterator.next_cursor) do |_, iterator|
173+
second_iterator = iterator
175174
end
176175

177-
Feed::Item.asc(field_name).limit(2).scroll(cursor) do |_, iterator|
178-
second_previous_cursor = iterator.previous_cursor
176+
Feed::Item.asc(field_name).limit(2).scroll(second_iterator.next_cursor) do |_, iterator|
177+
third_iterator = iterator
179178
end
180179

181180
records = Feed::Item.asc(field_name)
182-
expect(Feed::Item.asc(field_name).limit(2).scroll(first_previous_cursor)).to eq(records.limit(2))
183-
expect(Feed::Item.asc(field_name).limit(2).scroll(second_previous_cursor)).to eq(records.skip(2).limit(2))
181+
expect(Feed::Item.asc(field_name).limit(2).scroll(second_iterator.previous_cursor)).to eq(records.limit(2))
182+
expect(Feed::Item.asc(field_name).limit(2).scroll(third_iterator.previous_cursor)).to eq(records.skip(2).limit(2))
184183
end
185184
end
186185
end

0 commit comments

Comments
 (0)