sequel-seek-pagination 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e681598557874a5b7102fd630deef04e48dd08ec
4
- data.tar.gz: 176755ad95e8e78978dac323661a9b9f55762a0d
3
+ metadata.gz: 6618c26ae7817aca156c266b2981123bb313b7c4
4
+ data.tar.gz: 00b368ee9b8ff804aa9f658c3793d24c98262c4f
5
5
  SHA512:
6
- metadata.gz: 4581a836e385d1f061b984fbc14a94d7225d3010d67efb8b1e169f76ff80445044ec1d727bfe28c38761272e68629b1023cea8f683bf87be9c86d42c1bcca124
7
- data.tar.gz: 7c191afc86655d078da0d2c49b2aab2b6bbb42f21af9558c3ada83a8053ad45f60e3c4e39a2eeb8f251f4e0b9c952b1aacc01fc66c701fb0e7afbcf2de91dc5a
6
+ metadata.gz: 85ad99ff1ed0031e3bd60c79492de37f5248f5702f32ce7b07bfa957338153f17d84e82acf46dc31f5e9a2bafb6c794e00614620c5059512e0d976a8cde4fd41
7
+ data.tar.gz: 947e63b6731d904e9ea22cc3b91f1ad0dc4ea68480c9d7dc8019352b601c2a88727abba1d164da8a8ff8818e6ba2435a47fc8bbcaabd2cc2af5cb514338d217f
data/README.md CHANGED
@@ -13,16 +13,16 @@ DB.extension :seek_pagination
13
13
  ds = DB[:seek]
14
14
  ds.extension(:seek_pagination)
15
15
 
16
- # Use the new Dataset#seek_paginate method to get the first page.
17
- DB[:seek].order(:id).seek_paginate(50) # SELECT * FROM "seek" ORDER BY "id" LIMIT 50
16
+ # Get the first page of data:
17
+ DB[:seek].order(:id).limit(50) # SELECT * FROM "seek" ORDER BY "id" LIMIT 50
18
18
 
19
- # Use the last data you saw to get the second page.
19
+ # Pass the last data to the you saw to get the second page.
20
20
  # (suppose the id of the last row you got was 1456)
21
- DB[:seek].order(:id).seek_paginate(50, after: 1456) # SELECT * FROM "seek" WHERE ("id" > 1456) ORDER BY "id" LIMIT 50
21
+ DB[:seek].order(:id).limit(50).seek(value: 1456) # SELECT * FROM "seek" WHERE ("id" > 1456) ORDER BY "id" LIMIT 50
22
22
 
23
23
  # Also works when sorting by multiple columns.
24
- DB[:seek].order(:col1, :col2).seek_paginate(50) # SELECT * FROM "seek" ORDER BY "col1", "col2" LIMIT 50
25
- DB[:seek].order(:col1, :col2).seek_paginate(50, after: [12, 56]) # SELECT * FROM "seek" WHERE (("col1", "col2") > (12, 56)) ORDER BY "col1", "col2" LIMIT 50
24
+ DB[:seek].order(:col1, :col2).limit(50) # SELECT * FROM "seek" ORDER BY "col1", "col2" LIMIT 50
25
+ DB[:seek].order(:col1, :col2).limit(50).seek(value: [12, 56]) # SELECT * FROM "seek" WHERE (("col1", "col2") > (12, 56)) ORDER BY "col1", "col2" LIMIT 50
26
26
  ```
27
27
 
28
28
  ### Why Seek Pagination?
@@ -5,27 +5,19 @@ module Sequel
5
5
  module SeekPagination
6
6
  class Error < StandardError; end
7
7
 
8
- def seek_paginate(count, from: nil, after: nil, from_pk: nil, after_pk: nil, not_null: nil)
8
+ def seek(value: nil, pk: nil, include_exact_match: false, not_null: nil)
9
9
  order = opts[:order]
10
10
  model = @model
11
11
 
12
- if order.nil? || order.length.zero?
13
- raise Error, "cannot seek_paginate on a dataset with no order"
14
- elsif [from, after, from_pk, after_pk].compact.count > 1
15
- raise Error, "cannot pass more than one of the :from, :after, :from_pk and :after_pk arguments to seek_paginate"
16
- elsif model.nil? && (from_pk || after_pk)
17
- raise Error, "passed the :#{from_pk ? 'from' : 'after'}_pk option to seek_paginate on a dataset that doesn't have an associated model"
12
+ if !(value.nil? ^ pk.nil?)
13
+ raise Error, "must pass exactly one of :value and :pk to #seek"
14
+ elsif order.nil? || order.length.zero?
15
+ raise Error, "cannot call #seek on a dataset with no order"
16
+ elsif model.nil? && pk
17
+ raise Error, "attempted a primary key lookup on a dataset that doesn't have an associated model"
18
18
  end
19
19
 
20
- ds = limit(count)
21
-
22
- if values = from || after
23
- values = Array(values)
24
-
25
- if values.length != order.length
26
- raise Error, "passed the wrong number of values in the :#{from ? 'from' : 'after'} option to seek_paginate"
27
- end
28
- elsif pk = from_pk || after_pk
20
+ if pk
29
21
  target_ds = where(model.qualified_primary_key_hash(pk))
30
22
 
31
23
  # Need to load the values to order from for that pk from the DB, so we
@@ -33,7 +25,7 @@ module Sequel
33
25
  # Dataset#get won't like it if we pass it expressions that aren't
34
26
  # simple columns, so we need to give it aliases for everything.
35
27
  al = :a
36
- gettable = order.map do |o, i|
28
+ gettable = order.map do |o|
37
29
  expression = Sequel::SQL::OrderedExpression === o ? o.expression : o
38
30
  Sequel.as(expression, (al = al.next))
39
31
  end
@@ -41,27 +33,31 @@ module Sequel
41
33
  unless values = target_ds.get(gettable)
42
34
  raise NoMatchingRow.new(target_ds)
43
35
  end
36
+ else
37
+ values = Array(value)
38
+
39
+ if values.length != order.length
40
+ raise Error, "passed the wrong number of values to #seek"
41
+ end
44
42
  end
45
43
 
46
- if values
47
- if not_null.nil?
48
- not_null = []
44
+ if not_null.nil?
45
+ not_null = []
49
46
 
50
- # If the dataset was chained off a model, use its stored schema
51
- # information to figure out what columns are not null.
52
- if model
53
- model.db_schema.each do |column, schema|
54
- not_null << column if schema[:allow_null] == false
55
- end
47
+ # If the dataset was chained off a model, use its stored schema
48
+ # information to figure out what columns are not null.
49
+ if model
50
+ model.db_schema.each do |column, schema|
51
+ not_null << column if schema[:allow_null] == false
56
52
  end
57
53
  end
58
-
59
- # If we're paginating with a :from value, we want to include the row
60
- # that has those exact values.
61
- OrderedColumnSet.new(order.zip(values), include_exact_match: !!(from || from_pk), not_null: not_null).apply(ds)
62
- else
63
- ds
64
54
  end
55
+
56
+ OrderedColumnSet.new(
57
+ order.zip(values),
58
+ include_exact_match: include_exact_match,
59
+ not_null: not_null
60
+ ).apply(self)
65
61
  end
66
62
 
67
63
  private
@@ -92,21 +88,21 @@ module Sequel
92
88
  else
93
89
  Sequel.&(
94
90
  *length.times.map { |i|
95
- allow_equal = include_exact_match || i != length - 1
91
+ allow_equal = include_exact_match || i != (length - 1)
96
92
  conditions = orders[0..i]
97
93
 
98
94
  if i.zero?
99
- conditions[0].ineq(eq: allow_equal)
95
+ conditions[0].inequality_condition(allow_equal: allow_equal)
100
96
  else
101
97
  c = conditions[-2]
102
98
 
103
- list = if filter = conditions[-1].ineq(eq: allow_equal)
99
+ list = if filter = conditions[-1].inequality_condition(allow_equal: allow_equal)
104
100
  [Sequel.&(c.eq_filter, filter)]
105
101
  else
106
102
  [c.eq_filter]
107
103
  end
108
104
 
109
- list += conditions[0..-2].map { |c| c.ineq(eq: false) }
105
+ list += conditions[0..-2].map { |c| c.inequality_condition(allow_equal: false) }
110
106
 
111
107
  Sequel.|(*list.compact)
112
108
  end
@@ -160,25 +156,34 @@ module Sequel
160
156
  {name => nil}
161
157
  end
162
158
 
163
- def ineq(eq:)
159
+ def inequality_condition(allow_equal:)
164
160
  nulls_upcoming = !not_null && nulls == :last
165
161
 
166
- if !value.nil?
167
- filter = Sequel.virtual_row{|o| o.__send__(inequality_method(eq), name, value)}
168
- nulls_upcoming ? Sequel.|(filter, null_filter) : filter
169
- else
170
- if nulls_upcoming && eq
162
+ if value.nil?
163
+ if nulls_upcoming && allow_equal
171
164
  null_filter
172
- elsif !nulls_upcoming && !eq
165
+ elsif !nulls_upcoming && !allow_equal
173
166
  Sequel.~(null_filter)
167
+ else
168
+ # No condition necessary.
169
+ nil
170
+ end
171
+ else
172
+ # Value is not null.
173
+ filter = Sequel.virtual_row { |o| o.__send__(inequality_method(allow_equal), name, value) }
174
+
175
+ if nulls_upcoming
176
+ Sequel.|(filter, null_filter)
177
+ else
178
+ filter
174
179
  end
175
180
  end
176
181
  end
177
182
 
178
- def inequality_method(eq)
183
+ def inequality_method(allow_equal)
179
184
  case direction
180
- when :asc then eq ? :>= : :>
181
- when :desc then eq ? :<= : :<
185
+ when :asc then allow_equal ? :>= : :>
186
+ when :desc then allow_equal ? :<= : :<
182
187
  else raise "Bad direction: #{direction.inspect}"
183
188
  end
184
189
  end
@@ -1,5 +1,5 @@
1
1
  module Sequel
2
2
  module SeekPagination
3
- VERSION = '0.2.1'
3
+ VERSION = '0.3.0'
4
4
  end
5
5
  end
@@ -13,7 +13,7 @@ class SeekPaginationSpec < Minitest::Spec
13
13
  end
14
14
 
15
15
  class << self
16
- def it_should_seek_paginate_properly(ordering)
16
+ def it_should_seek_properly(ordering)
17
17
  columns = ordering.map do |order|
18
18
  case order
19
19
  when Sequel::SQL::OrderedExpression then order.expression
@@ -24,33 +24,28 @@ class SeekPaginationSpec < Minitest::Spec
24
24
  [:plain, :model].each do |dataset_type|
25
25
  describe "for a #{dataset_type} dataset" do
26
26
  dataset = dataset_type == :plain ? DB[:seek] : SeekModel
27
- dataset = dataset.order(*ordering)
27
+ dataset = dataset.order(*ordering).limit(100)
28
28
 
29
29
  # Can't pass any random expression to #get, so give them all aliases.
30
30
  gettable = columns.zip(:a..:z).map{|c,a| Sequel.as(c, a)}
31
31
 
32
- it "should limit the dataset appropriately when a starting point is not given" do
33
- assert_equal_results dataset.limit(10),
34
- dataset.seek_paginate(10)
35
- end
36
-
37
32
  it "should page properly when given a point to start from/after" do
38
33
  offset = rand(SEEK_COUNT)
39
34
  values = dataset.offset(offset).get(gettable)
40
35
 
41
- assert_equal_results dataset.offset(offset).limit(100),
42
- dataset.seek_paginate(100, from: values)
36
+ assert_equal_results dataset.offset(offset),
37
+ dataset.seek(value: values, include_exact_match: true)
43
38
 
44
- assert_equal_results dataset.offset(offset + 1).limit(100),
45
- dataset.seek_paginate(100, after: values)
39
+ assert_equal_results dataset.offset(offset + 1),
40
+ dataset.seek(value: values)
46
41
 
47
42
  if columns.length == 1
48
43
  # Should wrap values in an array if necessary
49
- assert_equal_results dataset.offset(offset).limit(100),
50
- dataset.seek_paginate(100, from: values.first)
44
+ assert_equal_results dataset.offset(offset),
45
+ dataset.seek(value: values.first, include_exact_match: true)
51
46
 
52
- assert_equal_results dataset.offset(offset + 1).limit(100),
53
- dataset.seek_paginate(100, after: values.first)
47
+ assert_equal_results dataset.offset(offset + 1),
48
+ dataset.seek(value: values.first)
54
49
  end
55
50
  end
56
51
 
@@ -58,11 +53,11 @@ class SeekPaginationSpec < Minitest::Spec
58
53
  offset = rand(SEEK_COUNT)
59
54
  values = dataset.offset(offset).get(gettable)
60
55
 
61
- assert_equal_results dataset.offset(offset).limit(100),
62
- dataset.seek_paginate(100, from: values, not_null: [:id, :non_nullable_1, :non_nullable_2])
56
+ assert_equal_results dataset.offset(offset),
57
+ dataset.seek(value: values, include_exact_match: true, not_null: [:id, :non_nullable_1, :non_nullable_2])
63
58
 
64
- assert_equal_results dataset.offset(offset + 1).limit(100),
65
- dataset.seek_paginate(100, after: values, not_null: [:id, :non_nullable_1, :non_nullable_2])
59
+ assert_equal_results dataset.offset(offset + 1),
60
+ dataset.seek(value: values, not_null: [:id, :non_nullable_1, :non_nullable_2])
66
61
  end
67
62
 
68
63
  if dataset_type == :model
@@ -70,11 +65,11 @@ class SeekPaginationSpec < Minitest::Spec
70
65
  offset = rand(SEEK_COUNT)
71
66
  id = dataset.offset(offset).get(:id)
72
67
 
73
- assert_equal_results dataset.offset(offset).limit(100),
74
- dataset.seek_paginate(100, from_pk: id)
68
+ assert_equal_results dataset.offset(offset),
69
+ dataset.seek(pk: id, include_exact_match: true)
75
70
 
76
- assert_equal_results dataset.offset(offset + 1).limit(100),
77
- dataset.seek_paginate(100, after_pk: id)
71
+ assert_equal_results dataset.offset(offset + 1),
72
+ dataset.seek(pk: id)
78
73
  end
79
74
  end
80
75
  end
@@ -84,14 +79,14 @@ class SeekPaginationSpec < Minitest::Spec
84
79
 
85
80
  describe "for ordering by a single not-null column in either order" do
86
81
  [Sequel.asc(:id), Sequel.desc(:id)].each do |o1|
87
- it_should_seek_paginate_properly [o1]
82
+ it_should_seek_properly [o1]
88
83
  end
89
84
  end
90
85
 
91
86
  describe "for ordering by two not-null columns in any order" do
92
87
  [Sequel.asc(:not_nullable_1), Sequel.desc(:not_nullable_1)].each do |o1|
93
88
  [Sequel.asc(:id), Sequel.desc(:id)].each do |o2|
94
- it_should_seek_paginate_properly [o1, o2]
89
+ it_should_seek_properly [o1, o2]
95
90
  end
96
91
  end
97
92
  end
@@ -100,7 +95,7 @@ class SeekPaginationSpec < Minitest::Spec
100
95
  [Sequel.asc(:not_nullable_1), Sequel.desc(:not_nullable_1)].each do |o1|
101
96
  [Sequel.asc(:not_nullable_2), Sequel.desc(:not_nullable_2)].each do |o2|
102
97
  [Sequel.asc(:id), Sequel.desc(:id)].each do |o3|
103
- it_should_seek_paginate_properly [o1, o2, o3]
98
+ it_should_seek_properly [o1, o2, o3]
104
99
  end
105
100
  end
106
101
  end
@@ -110,7 +105,7 @@ class SeekPaginationSpec < Minitest::Spec
110
105
  # We still tack on :id because the ordering needs to be unique.
111
106
  [Sequel.asc(:nullable_1), Sequel.desc(:nullable_1), Sequel.asc(:nullable_1, nulls: :first), Sequel.desc(:nullable_1, nulls: :last)].each do |o1|
112
107
  [Sequel.asc(:id), Sequel.desc(:id)].each do |o2|
113
- it_should_seek_paginate_properly [o1, o2]
108
+ it_should_seek_properly [o1, o2]
114
109
  end
115
110
  end
116
111
  end
@@ -120,7 +115,7 @@ class SeekPaginationSpec < Minitest::Spec
120
115
  [Sequel.asc(:nullable_1), Sequel.desc(:nullable_1), Sequel.asc(:nullable_1, nulls: :first), Sequel.desc(:nullable_1, nulls: :last)].each do |o1|
121
116
  [Sequel.asc(:nullable_2), Sequel.desc(:nullable_2), Sequel.asc(:nullable_2, nulls: :first), Sequel.desc(:nullable_2, nulls: :last)].each do |o2|
122
117
  [Sequel.asc(:id), Sequel.desc(:id)].each do |o3|
123
- it_should_seek_paginate_properly [o1, o2, o3]
118
+ it_should_seek_properly [o1, o2, o3]
124
119
  end
125
120
  end
126
121
  end
@@ -138,7 +133,7 @@ class SeekPaginationSpec < Minitest::Spec
138
133
  testing_columns = columns.sample(rand(columns.count) + 1).map(&:sample)
139
134
  testing_columns << [:id, Sequel.asc(:id), Sequel.desc(:id)].sample
140
135
 
141
- it_should_seek_paginate_properly(testing_columns)
136
+ it_should_seek_properly(testing_columns)
142
137
  end
143
138
  end
144
139
 
@@ -154,7 +149,7 @@ class SeekPaginationSpec < Minitest::Spec
154
149
  testing_columns = columns.sample(rand(columns.count) + 1).map(&:sample)
155
150
  testing_columns << [:id, Sequel.asc(:id), Sequel.desc(:id)].sample
156
151
 
157
- it_should_seek_paginate_properly(testing_columns)
152
+ it_should_seek_properly(testing_columns)
158
153
  end
159
154
  end
160
155
 
@@ -172,49 +167,41 @@ class SeekPaginationSpec < Minitest::Spec
172
167
  id = DB[:seek].order(:id).offset(56).get(:id)
173
168
 
174
169
  datasets.each do |dataset|
175
- assert_equal_results DB[:seek].order(:id).limit(5),
176
- dataset.seek_paginate(5)
177
-
178
170
  assert_equal_results DB[:seek].order(:id).offset(56).limit(5),
179
- dataset.seek_paginate(5, from: id)
171
+ dataset.limit(5).seek(value: id, include_exact_match: true)
180
172
 
181
173
  assert_equal_results DB[:seek].order(:id).offset(57).limit(5),
182
- dataset.seek_paginate(5, after: id)
174
+ dataset.limit(5).seek(value: id)
183
175
  end
184
176
  end
185
177
 
186
178
  it "should raise an error if the dataset is not ordered" do
187
- assert_error_message("cannot seek_paginate on a dataset with no order") { DB[:seek].seek_paginate(30) }
179
+ assert_error_message("cannot call #seek on a dataset with no order") { DB[:seek].seek(value: 3) }
188
180
  end
189
181
 
190
- it "should raise an error if more than one location argument is passed to seek_paginate" do
191
- assert_error_message("cannot pass more than one of the :from, :after, :from_pk and :after_pk arguments to seek_paginate") { DB[:seek].order(:id).seek_paginate(30, from: 3, after: 4) }
192
- assert_error_message("cannot pass more than one of the :from, :after, :from_pk and :after_pk arguments to seek_paginate") { DB[:seek].order(:id).seek_paginate(30, from_pk: 3, after_pk: 4) }
193
- assert_error_message("cannot pass more than one of the :from, :after, :from_pk and :after_pk arguments to seek_paginate") { DB[:seek].order(:id).seek_paginate(30, from: 3, after_pk: 4) }
194
- assert_error_message("cannot pass more than one of the :from, :after, :from_pk and :after_pk arguments to seek_paginate") { DB[:seek].order(:id).seek_paginate(30, from_pk: 3, after: 4) }
182
+ it "should raise an error unless exactly one of :value and :pk is passed" do
183
+ assert_error_message("must pass exactly one of :value and :pk to #seek") { DB[:seek].seek }
184
+ assert_error_message("must pass exactly one of :value and :pk to #seek") { DB[:seek].seek(value: 3, pk: 3) }
195
185
  end
196
186
 
197
- it "should raise an error if given the wrong number of values to from or after" do
198
- assert_error_message("passed the wrong number of values in the :from option to seek_paginate") { DB[:seek].order(:id, :nullable_1).seek_paginate(30, from: [3]) }
199
- assert_error_message("passed the wrong number of values in the :after option to seek_paginate") { DB[:seek].order(:id, :nullable_1).seek_paginate(30, after: [3]) }
200
- assert_error_message("passed the wrong number of values in the :from option to seek_paginate") { DB[:seek].order(:id, :nullable_1).seek_paginate(30, from: [3, 4, 5]) }
201
- assert_error_message("passed the wrong number of values in the :after option to seek_paginate") { DB[:seek].order(:id, :nullable_1).seek_paginate(30, after: [3, 4, 5]) }
187
+ it "should raise an error if given the wrong number of values" do
188
+ assert_error_message("passed the wrong number of values to #seek") { DB[:seek].order(:id, :nullable_1).seek(value: 3) }
189
+ assert_error_message("passed the wrong number of values to #seek") { DB[:seek].order(:id, :nullable_1).seek(value: [3]) }
190
+ assert_error_message("passed the wrong number of values to #seek") { DB[:seek].order(:id, :nullable_1).seek(value: [3, 4, 5]) }
202
191
  end
203
192
 
204
193
  it "should raise an error if from_pk or after_pk are passed to a dataset without an associated model" do
205
- assert_error_message("passed the :from_pk option to seek_paginate on a dataset that doesn't have an associated model") { DB[:seek].order(:id, :nullable_1).seek_paginate(30, from_pk: 3) }
206
- assert_error_message("passed the :after_pk option to seek_paginate on a dataset that doesn't have an associated model") { DB[:seek].order(:id, :nullable_1).seek_paginate(30, after_pk: 3) }
194
+ assert_error_message("attempted a primary key lookup on a dataset that doesn't have an associated model") { DB[:seek].order(:id, :nullable_1).seek(pk: 3) }
207
195
  end
208
196
 
209
197
  describe "when chained from a model" do
210
198
  it "should be able to determine from the schema what columns are not null" do
211
199
  assert_equal %(SELECT * FROM "seek" WHERE (("not_nullable_1", "not_nullable_2", "id") > (1, 2, 3)) ORDER BY "not_nullable_1", "not_nullable_2", "id" LIMIT 5),
212
- SeekModel.order(:not_nullable_1, :not_nullable_2, :id).seek_paginate(5, after: [1, 2, 3]).sql
200
+ SeekModel.order(:not_nullable_1, :not_nullable_2, :id).seek(value: [1, 2, 3]).limit(5).sql
213
201
  end
214
202
 
215
203
  it "should raise an error when passed a pk for a record that doesn't exist in the dataset" do
216
- assert_raises(Sequel::NoMatchingRow) { SeekModel.order(:id).seek_paginate(5, after_pk: -45) }
217
- assert_raises(Sequel::NoMatchingRow) { SeekModel.order(:id).seek_paginate(5, from_pk: -45) }
204
+ assert_raises(Sequel::NoMatchingRow) { SeekModel.order(:id).seek(pk: -45) }
218
205
  end
219
206
  end
220
207
  end
@@ -37,17 +37,17 @@ task :benchmark do
37
37
  DB.add_index :seek, [:non_nullable_1]
38
38
 
39
39
  {
40
- "1 column, not-null, ascending, no not-null information" => DB[:seek].order(:id.asc ).seek_paginate(30, after: rand(RECORD_COUNT) + 1),
41
- "1 column, not-null, descending, no not-null information" => DB[:seek].order(:id.desc).seek_paginate(30, after: rand(RECORD_COUNT) + 1),
40
+ "1 column, not-null, ascending, no not-null information" => DB[:seek].limit(30).order(:id.asc ).seek(value: rand(RECORD_COUNT) + 1),
41
+ "1 column, not-null, descending, no not-null information" => DB[:seek].limit(30).order(:id.desc).seek(value: rand(RECORD_COUNT) + 1),
42
42
 
43
- "1 column, not-null, ascending, with not-null information" => DB[:seek].order(:id.asc ).seek_paginate(30, after: rand(RECORD_COUNT) + 1, not_null: [:id, :not_nullable_1, :not_nullable_2]),
44
- "1 column, not-null, descending, with not-null information" => DB[:seek].order(:id.desc).seek_paginate(30, after: rand(RECORD_COUNT) + 1, not_null: [:id, :not_nullable_1, :not_nullable_2]),
43
+ "1 column, not-null, ascending, with not-null information" => DB[:seek].limit(30).order(:id.asc ).seek(value: rand(RECORD_COUNT) + 1, not_null: [:id, :not_nullable_1, :not_nullable_2]),
44
+ "1 column, not-null, descending, with not-null information" => DB[:seek].limit(30).order(:id.desc).seek(value: rand(RECORD_COUNT) + 1, not_null: [:id, :not_nullable_1, :not_nullable_2]),
45
45
 
46
- "2 columns, not-null, ascending, no not-null information" => DB[:seek].order(:non_nullable_1.asc, :id.asc ).seek_paginate(30, after: [5, rand(RECORD_COUNT) + 1]),
47
- "2 columns, not-null, descending, no not-null information" => DB[:seek].order(:non_nullable_1.desc, :id.desc).seek_paginate(30, after: [5, rand(RECORD_COUNT) + 1]),
46
+ "2 columns, not-null, ascending, no not-null information" => DB[:seek].limit(30).order(:non_nullable_1.asc, :id.asc ).seek(value: [5, rand(RECORD_COUNT) + 1]),
47
+ "2 columns, not-null, descending, no not-null information" => DB[:seek].limit(30).order(:non_nullable_1.desc, :id.desc).seek(value: [5, rand(RECORD_COUNT) + 1]),
48
48
 
49
- "2 columns, not-null, ascending, with not-null information" => DB[:seek].order(:non_nullable_1.asc, :id.asc ).seek_paginate(30, after: [5, rand(RECORD_COUNT) + 1], not_null: [:id, :non_nullable_1, :non_nullable_2]),
50
- "2 columns, not-null, descending, with not-null information" => DB[:seek].order(:non_nullable_1.desc, :id.desc).seek_paginate(30, after: [5, rand(RECORD_COUNT) + 1], not_null: [:id, :non_nullable_1, :non_nullable_2]),
49
+ "2 columns, not-null, ascending, with not-null information" => DB[:seek].limit(30).order(:non_nullable_1.asc, :id.asc ).seek(value: [5, rand(RECORD_COUNT) + 1], not_null: [:id, :non_nullable_1, :non_nullable_2]),
50
+ "2 columns, not-null, descending, with not-null information" => DB[:seek].limit(30).order(:non_nullable_1.desc, :id.desc).seek(value: [5, rand(RECORD_COUNT) + 1], not_null: [:id, :non_nullable_1, :non_nullable_2]),
51
51
  }.each do |description, ds|
52
52
  puts
53
53
  puts description + ':'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sequel-seek-pagination
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.1
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Hanks
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-12-07 00:00:00.000000000 Z
11
+ date: 2016-07-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -107,7 +107,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
107
107
  version: '0'
108
108
  requirements: []
109
109
  rubyforge_project:
110
- rubygems_version: 2.4.8
110
+ rubygems_version: 2.5.1
111
111
  signing_key:
112
112
  specification_version: 4
113
113
  summary: Seek pagination for Sequel + PostgreSQL