sequel-seek-pagination 0.2.1 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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