cursor_pager 0.2.0 → 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
  SHA256:
3
- metadata.gz: 2cae99728d5827015878e6af2b7e5b06851984dec3e82f6b7ffce0e471ecab1c
4
- data.tar.gz: 548d5f8799dd7748837a083ef9ec8cc8f620ede7a29107ddb7c20be28a64efb1
3
+ metadata.gz: 481947bc305ba5c0952bd48e7a11cce97ef065d8c52eb8a17b911f936cc3bcb5
4
+ data.tar.gz: 072b3a752fd17c323595cb60282180c315008d84dd443938367b0cc1899bc8bc
5
5
  SHA512:
6
- metadata.gz: f84865be5f0153580346a191e58dc8483abc2a3699a358a38a2d6117624610c102fdde004b9a785b07b2095141be06e385416c5f0b94b30f2a22b0bfb1572c2d
7
- data.tar.gz: e7131697760670148494e697db0579dc3d96486d09fe945552bbe22d824654afb827c0392e86099725aa48a8c72d8e4c26bcc0ffb5ffcb77561c490a09c47390
6
+ metadata.gz: e8afbe43e9f1585d5aa70dffcebcb87654975889f054c79d9dddd55b3cda410189a0cf121ae886e7bca9954f084457884edff4cc7e6537fe48c765447fc5eec9
7
+ data.tar.gz: 61742d6d1e3d1a45af9202578dda3ad290fb059259d02b091a4233dff0354024e0b1c99c88eb7076d235d2e6eac181d7ec9f0fbb6006288cbc472b6984843033
@@ -2,17 +2,23 @@ name: CI
2
2
 
3
3
  on:
4
4
  push:
5
- branches: [master]
5
+ branches: [main]
6
6
  pull_request:
7
- branches: [master]
7
+ branches: [main]
8
8
 
9
9
  jobs:
10
10
  test:
11
11
  runs-on: ubuntu-latest
12
12
  strategy:
13
+ fail-fast: false
13
14
  matrix:
14
- ruby-version: ["2.6", "2.7"]
15
- activerecord-version: ["5.2", "6.0"]
15
+ include:
16
+ - ruby-version: "2.6"
17
+ activerecord-version: "5.2"
18
+ - ruby-version: "2.7"
19
+ activerecord-version: "6.0"
20
+ - ruby-version: "3.0"
21
+ activerecord-version: "6.1"
16
22
 
17
23
  services:
18
24
  db:
@@ -31,9 +37,9 @@ jobs:
31
37
  uses: actions/cache@v1
32
38
  with:
33
39
  path: vendor/bundle
34
- key: ${{ runner.os }}-gems-${{ hashFiles('**/Gemfile.lock') }}
40
+ key: ${{ runner.os }}-gems-${{ matrix.ruby-version }}-${{ hashFiles('**/Gemfile.lock') }}
35
41
  restore-keys: |
36
- ${{ runner.os }}-gems-
42
+ ${{ runner.os }}-gems-${{ matrix.ruby-version }}-
37
43
 
38
44
  - name: Set up Ruby ${{ matrix.ruby-version }}
39
45
  uses: ruby/setup-ruby@v1
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.7.1
1
+ 2.7.2
data/Appraisals CHANGED
@@ -7,3 +7,7 @@ end
7
7
  appraise "activerecord-6.0" do
8
8
  gem "activerecord", "~> 6.0.0"
9
9
  end
10
+
11
+ appraise "activerecord-6.1" do
12
+ gem "activerecord", "~> 6.1.0"
13
+ end
data/CHANGELOG.md CHANGED
@@ -7,6 +7,35 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.3.0] - 2021-06-11
11
+ ### Added
12
+
13
+ * Add `cursor` attribute to `CursorNotFoundError`
14
+
15
+ ## [0.2.4] - 2021-04-01
16
+
17
+ ### Fixed
18
+
19
+ * Fix `Page#next_page?` when given a grouped relation #15
20
+
21
+ ## [0.2.3] - 2020-11-23
22
+
23
+ ### Fixed
24
+
25
+ * Fix using cursors with preloaded or eager loaded associations #13
26
+
27
+ ## [0.2.2] - 2020-09-29
28
+
29
+ ### Fixed
30
+
31
+ * Fix checking if the next page exists when a custom select is given #12
32
+
33
+ ## [0.2.1] - 2020-05-13
34
+
35
+ ### Fixed
36
+
37
+ * Fix fetching cursor values when relation has join and string order values #9
38
+
10
39
  ## [0.2.0] - 2020-04-23
11
40
 
12
41
  ### Added
@@ -21,6 +50,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
21
50
  * First implementation of cursor-pased pagination #2
22
51
  * Configurable cursor encoder #3
23
52
 
24
- [Unreleased]: https://github.com/askcharlie/cursor_pager/compare/v0.2.0...HEAD
25
- [0.2.0]: https://github.com/askcharlie/cursor_pager/compare/v0.1.0...v0.2.0
26
- [0.1.0]: https://github.com/askcharlie/cursor_pager/releases/tag/v0.1.0
53
+ [Unreleased]: https://github.com/check24-profis/shared-cursor-pager/compare/v0.3.0...HEAD
54
+ [0.3.0]: https://github.com/check24-profis/shared-cursor-pager/compare/v0.2.4...v0.3.0
55
+ [0.2.4]: https://github.com/check24-profis/shared-cursor-pager/compare/v0.2.3...v0.2.4
56
+ [0.2.3]: https://github.com/check24-profis/shared-cursor-pager/compare/v0.2.2...v0.2.3
57
+ [0.2.2]: https://github.com/check24-profis/shared-cursor-pager/compare/v0.2.1...v0.2.2
58
+ [0.2.1]: https://github.com/check24-profis/shared-cursor-pager/compare/v0.2.0...v0.2.1
59
+ [0.2.0]: https://github.com/check24-profis/shared-cursor-pager/compare/v0.1.0...v0.2.0
60
+ [0.1.0]: https://github.com/check24-profis/shared-cursor-pager/releases/tag/v0.1.0
data/Gemfile.lock CHANGED
@@ -1,73 +1,75 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cursor_pager (0.2.0)
4
+ cursor_pager (0.3.0)
5
5
  activerecord (>= 5.2.0)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- activemodel (6.0.2.2)
11
- activesupport (= 6.0.2.2)
12
- activerecord (6.0.2.2)
13
- activemodel (= 6.0.2.2)
14
- activesupport (= 6.0.2.2)
15
- activesupport (6.0.2.2)
10
+ activemodel (6.1.3.1)
11
+ activesupport (= 6.1.3.1)
12
+ activerecord (6.1.3.1)
13
+ activemodel (= 6.1.3.1)
14
+ activesupport (= 6.1.3.1)
15
+ activesupport (6.1.3.1)
16
16
  concurrent-ruby (~> 1.0, >= 1.0.2)
17
- i18n (>= 0.7, < 2)
18
- minitest (~> 5.1)
19
- tzinfo (~> 1.1)
20
- zeitwerk (~> 2.2)
21
- appraisal (2.2.0)
17
+ i18n (>= 1.6, < 2)
18
+ minitest (>= 5.1)
19
+ tzinfo (~> 2.0)
20
+ zeitwerk (~> 2.3)
21
+ appraisal (2.4.0)
22
22
  bundler
23
23
  rake
24
24
  thor (>= 0.14.0)
25
- ast (2.4.0)
26
- concurrent-ruby (1.1.6)
27
- database_cleaner (1.8.4)
28
- database_cleaner-active_record (1.8.0)
29
- activerecord
30
- database_cleaner (~> 1.8.0)
31
- diff-lcs (1.3)
32
- i18n (1.8.2)
25
+ ast (2.4.2)
26
+ concurrent-ruby (1.1.8)
27
+ database_cleaner-active_record (2.0.0)
28
+ activerecord (>= 5.a)
29
+ database_cleaner-core (~> 2.0.0)
30
+ database_cleaner-core (2.0.1)
31
+ diff-lcs (1.4.4)
32
+ i18n (1.8.10)
33
33
  concurrent-ruby (~> 1.0)
34
- jaro_winkler (1.5.4)
35
- minitest (5.14.0)
36
- parallel (1.19.1)
37
- parser (2.7.1.1)
38
- ast (~> 2.4.0)
34
+ minitest (5.14.4)
35
+ parallel (1.20.1)
36
+ parser (3.0.0.0)
37
+ ast (~> 2.4.1)
39
38
  pg (1.2.3)
40
39
  rainbow (3.0.0)
41
40
  rake (12.3.3)
42
- rexml (3.2.4)
43
- rspec (3.9.0)
44
- rspec-core (~> 3.9.0)
45
- rspec-expectations (~> 3.9.0)
46
- rspec-mocks (~> 3.9.0)
47
- rspec-core (3.9.1)
48
- rspec-support (~> 3.9.1)
49
- rspec-expectations (3.9.1)
41
+ regexp_parser (2.1.1)
42
+ rexml (3.2.5)
43
+ rspec (3.10.0)
44
+ rspec-core (~> 3.10.0)
45
+ rspec-expectations (~> 3.10.0)
46
+ rspec-mocks (~> 3.10.0)
47
+ rspec-core (3.10.1)
48
+ rspec-support (~> 3.10.0)
49
+ rspec-expectations (3.10.1)
50
50
  diff-lcs (>= 1.2.0, < 2.0)
51
- rspec-support (~> 3.9.0)
52
- rspec-mocks (3.9.1)
51
+ rspec-support (~> 3.10.0)
52
+ rspec-mocks (3.10.2)
53
53
  diff-lcs (>= 1.2.0, < 2.0)
54
- rspec-support (~> 3.9.0)
55
- rspec-support (3.9.2)
56
- rubocop (0.82.0)
57
- jaro_winkler (~> 1.5.1)
54
+ rspec-support (~> 3.10.0)
55
+ rspec-support (3.10.2)
56
+ rubocop (1.12.0)
58
57
  parallel (~> 1.10)
59
- parser (>= 2.7.0.1)
58
+ parser (>= 3.0.0.0)
60
59
  rainbow (>= 2.2.2, < 4.0)
60
+ regexp_parser (>= 1.8, < 3.0)
61
61
  rexml
62
+ rubocop-ast (>= 1.2.0, < 2.0)
62
63
  ruby-progressbar (~> 1.7)
63
- unicode-display_width (>= 1.4.0, < 2.0)
64
- ruby-progressbar (1.10.1)
65
- thor (1.0.1)
66
- thread_safe (0.3.6)
67
- tzinfo (1.2.7)
68
- thread_safe (~> 0.1)
69
- unicode-display_width (1.7.0)
70
- zeitwerk (2.3.0)
64
+ unicode-display_width (>= 1.4.0, < 3.0)
65
+ rubocop-ast (1.4.1)
66
+ parser (>= 2.7.1.5)
67
+ ruby-progressbar (1.11.0)
68
+ thor (1.1.0)
69
+ tzinfo (2.0.4)
70
+ concurrent-ruby (~> 1.0)
71
+ unicode-display_width (2.0.0)
72
+ zeitwerk (2.4.2)
71
73
 
72
74
  PLATFORMS
73
75
  ruby
@@ -82,4 +84,4 @@ DEPENDENCIES
82
84
  rubocop
83
85
 
84
86
  BUNDLED WITH
85
- 2.1.4
87
+ 2.2.15
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # CursorPager
2
2
 
3
- ![build](https://github.com/askcharlie/cursor_pager/workflows/CI/badge.svg) [![Gem Version](https://badge.fury.io/rb/cursor_pager.svg)](https://badge.fury.io/rb/cursor_pager)
3
+ ![build](https://github.com/check24-profis/shared-cursor-pager/workflows/CI/badge.svg) [![Gem Version](https://badge.fury.io/rb/cursor_pager.svg)](https://badge.fury.io/rb/cursor_pager)
4
4
 
5
5
  A small and easy-to-use library that aims to make it easy to build Rails APIs
6
6
  with cursor-based pagination (aka keyset pagination).
@@ -119,5 +119,5 @@ The gem is available as open source under the terms of the [MIT License].
119
119
 
120
120
  [JSON API Cursor Pagination]: https://jsonapi.org/profiles/ethanresnick/cursor-pagination/
121
121
  [Relay's GraphQL Cursor Connection]: https://relay.dev/graphql/connections.htm
122
- [code of conduct]: https://github.com/askcharlie/cursor_pager/blob/master/CODE_OF_CONDUCT.md
122
+ [code of conduct]: https://github.com/check24-profis/shared-cursor-pager/blob/main/CODE_OF_CONDUCT.md
123
123
  [MIT License]: https://opensource.org/licenses/MIT
data/cursor_pager.gemspec CHANGED
@@ -9,14 +9,14 @@ Gem::Specification.new do |spec|
9
9
  spec.email = ["bastian.bartmann@check24.de"]
10
10
 
11
11
  spec.summary = "Cursor-based pagination for ActiveRecord relations."
12
- spec.homepage = "https://github.com/askcharlie/cursor_pager"
12
+ spec.homepage = "https://github.com/check24-profis/shared-cursor-pager"
13
13
  spec.license = "MIT"
14
14
  spec.required_ruby_version = Gem::Requirement.new(">= 2.6.0")
15
15
 
16
16
  spec.metadata["homepage_uri"] = spec.homepage
17
17
  spec.metadata["source_code_uri"] = spec.homepage
18
18
  spec.metadata["changelog_uri"] =
19
- "https://github.com/askcharlie/cursor_pager/blob/master/CHANGELOG.md"
19
+ "https://github.com/check24-profis/shared-cursor-pager/blob/main/CHANGELOG.md"
20
20
 
21
21
  spec.files = Dir.chdir(File.expand_path(__dir__)) do
22
22
  `git ls-files -z`
@@ -1,71 +1,74 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- cursor_pager (0.1.0)
4
+ cursor_pager (0.3.0)
5
5
  activerecord (>= 5.2.0)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- activemodel (5.2.4.2)
11
- activesupport (= 5.2.4.2)
12
- activerecord (5.2.4.2)
13
- activemodel (= 5.2.4.2)
14
- activesupport (= 5.2.4.2)
10
+ activemodel (5.2.4.4)
11
+ activesupport (= 5.2.4.4)
12
+ activerecord (5.2.4.4)
13
+ activemodel (= 5.2.4.4)
14
+ activesupport (= 5.2.4.4)
15
15
  arel (>= 9.0)
16
- activesupport (5.2.4.2)
16
+ activesupport (5.2.4.4)
17
17
  concurrent-ruby (~> 1.0, >= 1.0.2)
18
18
  i18n (>= 0.7, < 2)
19
19
  minitest (~> 5.1)
20
20
  tzinfo (~> 1.1)
21
- appraisal (2.2.0)
21
+ appraisal (2.3.0)
22
22
  bundler
23
23
  rake
24
24
  thor (>= 0.14.0)
25
25
  arel (9.0.0)
26
- ast (2.4.0)
27
- concurrent-ruby (1.1.6)
28
- database_cleaner (1.8.4)
26
+ ast (2.4.1)
27
+ concurrent-ruby (1.1.7)
28
+ database_cleaner (1.8.5)
29
29
  database_cleaner-active_record (1.8.0)
30
30
  activerecord
31
31
  database_cleaner (~> 1.8.0)
32
- diff-lcs (1.3)
33
- i18n (1.8.2)
32
+ diff-lcs (1.4.4)
33
+ i18n (1.8.5)
34
34
  concurrent-ruby (~> 1.0)
35
- jaro_winkler (1.5.4)
36
- minitest (5.14.0)
37
- parallel (1.19.1)
38
- parser (2.7.1.1)
39
- ast (~> 2.4.0)
35
+ minitest (5.14.2)
36
+ parallel (1.20.1)
37
+ parser (2.7.2.0)
38
+ ast (~> 2.4.1)
40
39
  pg (1.2.3)
41
40
  rainbow (3.0.0)
42
41
  rake (12.3.3)
42
+ regexp_parser (1.8.2)
43
43
  rexml (3.2.4)
44
- rspec (3.9.0)
45
- rspec-core (~> 3.9.0)
46
- rspec-expectations (~> 3.9.0)
47
- rspec-mocks (~> 3.9.0)
48
- rspec-core (3.9.1)
49
- rspec-support (~> 3.9.1)
50
- rspec-expectations (3.9.1)
44
+ rspec (3.10.0)
45
+ rspec-core (~> 3.10.0)
46
+ rspec-expectations (~> 3.10.0)
47
+ rspec-mocks (~> 3.10.0)
48
+ rspec-core (3.10.0)
49
+ rspec-support (~> 3.10.0)
50
+ rspec-expectations (3.10.0)
51
51
  diff-lcs (>= 1.2.0, < 2.0)
52
- rspec-support (~> 3.9.0)
53
- rspec-mocks (3.9.1)
52
+ rspec-support (~> 3.10.0)
53
+ rspec-mocks (3.10.0)
54
54
  diff-lcs (>= 1.2.0, < 2.0)
55
- rspec-support (~> 3.9.0)
56
- rspec-support (3.9.2)
57
- rubocop (0.81.0)
58
- jaro_winkler (~> 1.5.1)
55
+ rspec-support (~> 3.10.0)
56
+ rspec-support (3.10.0)
57
+ rubocop (1.4.0)
59
58
  parallel (~> 1.10)
60
- parser (>= 2.7.0.1)
59
+ parser (>= 2.7.1.5)
61
60
  rainbow (>= 2.2.2, < 4.0)
61
+ regexp_parser (>= 1.8)
62
62
  rexml
63
+ rubocop-ast (>= 1.1.1)
63
64
  ruby-progressbar (~> 1.7)
64
65
  unicode-display_width (>= 1.4.0, < 2.0)
66
+ rubocop-ast (1.1.1)
67
+ parser (>= 2.7.1.5)
65
68
  ruby-progressbar (1.10.1)
66
69
  thor (1.0.1)
67
70
  thread_safe (0.3.6)
68
- tzinfo (1.2.7)
71
+ tzinfo (1.2.8)
69
72
  thread_safe (~> 0.1)
70
73
  unicode-display_width (1.7.0)
71
74
 
@@ -83,4 +86,4 @@ DEPENDENCIES
83
86
  rubocop
84
87
 
85
88
  BUNDLED WITH
86
- 2.1.4
89
+ 2.2.15
@@ -1,73 +1,76 @@
1
1
  PATH
2
2
  remote: ..
3
3
  specs:
4
- cursor_pager (0.1.0)
4
+ cursor_pager (0.3.0)
5
5
  activerecord (>= 5.2.0)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- activemodel (6.0.2.2)
11
- activesupport (= 6.0.2.2)
12
- activerecord (6.0.2.2)
13
- activemodel (= 6.0.2.2)
14
- activesupport (= 6.0.2.2)
15
- activesupport (6.0.2.2)
10
+ activemodel (6.0.3.4)
11
+ activesupport (= 6.0.3.4)
12
+ activerecord (6.0.3.4)
13
+ activemodel (= 6.0.3.4)
14
+ activesupport (= 6.0.3.4)
15
+ activesupport (6.0.3.4)
16
16
  concurrent-ruby (~> 1.0, >= 1.0.2)
17
17
  i18n (>= 0.7, < 2)
18
18
  minitest (~> 5.1)
19
19
  tzinfo (~> 1.1)
20
- zeitwerk (~> 2.2)
21
- appraisal (2.2.0)
20
+ zeitwerk (~> 2.2, >= 2.2.2)
21
+ appraisal (2.3.0)
22
22
  bundler
23
23
  rake
24
24
  thor (>= 0.14.0)
25
- ast (2.4.0)
26
- concurrent-ruby (1.1.6)
27
- database_cleaner (1.8.4)
25
+ ast (2.4.1)
26
+ concurrent-ruby (1.1.7)
27
+ database_cleaner (1.8.5)
28
28
  database_cleaner-active_record (1.8.0)
29
29
  activerecord
30
30
  database_cleaner (~> 1.8.0)
31
- diff-lcs (1.3)
32
- i18n (1.8.2)
31
+ diff-lcs (1.4.4)
32
+ i18n (1.8.5)
33
33
  concurrent-ruby (~> 1.0)
34
- jaro_winkler (1.5.4)
35
- minitest (5.14.0)
36
- parallel (1.19.1)
37
- parser (2.7.1.1)
38
- ast (~> 2.4.0)
34
+ minitest (5.14.2)
35
+ parallel (1.20.1)
36
+ parser (2.7.2.0)
37
+ ast (~> 2.4.1)
39
38
  pg (1.2.3)
40
39
  rainbow (3.0.0)
41
40
  rake (12.3.3)
41
+ regexp_parser (1.8.2)
42
42
  rexml (3.2.4)
43
- rspec (3.9.0)
44
- rspec-core (~> 3.9.0)
45
- rspec-expectations (~> 3.9.0)
46
- rspec-mocks (~> 3.9.0)
47
- rspec-core (3.9.1)
48
- rspec-support (~> 3.9.1)
49
- rspec-expectations (3.9.1)
43
+ rspec (3.10.0)
44
+ rspec-core (~> 3.10.0)
45
+ rspec-expectations (~> 3.10.0)
46
+ rspec-mocks (~> 3.10.0)
47
+ rspec-core (3.10.0)
48
+ rspec-support (~> 3.10.0)
49
+ rspec-expectations (3.10.0)
50
50
  diff-lcs (>= 1.2.0, < 2.0)
51
- rspec-support (~> 3.9.0)
52
- rspec-mocks (3.9.1)
51
+ rspec-support (~> 3.10.0)
52
+ rspec-mocks (3.10.0)
53
53
  diff-lcs (>= 1.2.0, < 2.0)
54
- rspec-support (~> 3.9.0)
55
- rspec-support (3.9.2)
56
- rubocop (0.81.0)
57
- jaro_winkler (~> 1.5.1)
54
+ rspec-support (~> 3.10.0)
55
+ rspec-support (3.10.0)
56
+ rubocop (1.4.0)
58
57
  parallel (~> 1.10)
59
- parser (>= 2.7.0.1)
58
+ parser (>= 2.7.1.5)
60
59
  rainbow (>= 2.2.2, < 4.0)
60
+ regexp_parser (>= 1.8)
61
61
  rexml
62
+ rubocop-ast (>= 1.1.1)
62
63
  ruby-progressbar (~> 1.7)
63
64
  unicode-display_width (>= 1.4.0, < 2.0)
65
+ rubocop-ast (1.1.1)
66
+ parser (>= 2.7.1.5)
64
67
  ruby-progressbar (1.10.1)
65
68
  thor (1.0.1)
66
69
  thread_safe (0.3.6)
67
- tzinfo (1.2.7)
70
+ tzinfo (1.2.8)
68
71
  thread_safe (~> 0.1)
69
72
  unicode-display_width (1.7.0)
70
- zeitwerk (2.3.0)
73
+ zeitwerk (2.4.1)
71
74
 
72
75
  PLATFORMS
73
76
  ruby
@@ -83,4 +86,4 @@ DEPENDENCIES
83
86
  rubocop
84
87
 
85
88
  BUNDLED WITH
86
- 2.1.4
89
+ 2.2.15
@@ -0,0 +1,13 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "appraisal"
6
+ gem "database_cleaner-active_record"
7
+ gem "pg"
8
+ gem "rake", "~> 12.0"
9
+ gem "rspec", "~> 3.0"
10
+ gem "rubocop"
11
+ gem "activerecord", "~> 6.1.0"
12
+
13
+ gemspec path: "../"
@@ -0,0 +1,89 @@
1
+ PATH
2
+ remote: ..
3
+ specs:
4
+ cursor_pager (0.3.0)
5
+ activerecord (>= 5.2.0)
6
+
7
+ GEM
8
+ remote: https://rubygems.org/
9
+ specs:
10
+ activemodel (6.1.3.1)
11
+ activesupport (= 6.1.3.1)
12
+ activerecord (6.1.3.1)
13
+ activemodel (= 6.1.3.1)
14
+ activesupport (= 6.1.3.1)
15
+ activesupport (6.1.3.1)
16
+ concurrent-ruby (~> 1.0, >= 1.0.2)
17
+ i18n (>= 1.6, < 2)
18
+ minitest (>= 5.1)
19
+ tzinfo (~> 2.0)
20
+ zeitwerk (~> 2.3)
21
+ appraisal (2.4.0)
22
+ bundler
23
+ rake
24
+ thor (>= 0.14.0)
25
+ ast (2.4.2)
26
+ concurrent-ruby (1.1.8)
27
+ database_cleaner-active_record (2.0.0)
28
+ activerecord (>= 5.a)
29
+ database_cleaner-core (~> 2.0.0)
30
+ database_cleaner-core (2.0.1)
31
+ diff-lcs (1.4.4)
32
+ i18n (1.8.10)
33
+ concurrent-ruby (~> 1.0)
34
+ minitest (5.14.4)
35
+ parallel (1.20.1)
36
+ parser (3.0.0.0)
37
+ ast (~> 2.4.1)
38
+ pg (1.2.3)
39
+ rainbow (3.0.0)
40
+ rake (12.3.3)
41
+ regexp_parser (2.1.1)
42
+ rexml (3.2.4)
43
+ rspec (3.10.0)
44
+ rspec-core (~> 3.10.0)
45
+ rspec-expectations (~> 3.10.0)
46
+ rspec-mocks (~> 3.10.0)
47
+ rspec-core (3.10.1)
48
+ rspec-support (~> 3.10.0)
49
+ rspec-expectations (3.10.1)
50
+ diff-lcs (>= 1.2.0, < 2.0)
51
+ rspec-support (~> 3.10.0)
52
+ rspec-mocks (3.10.2)
53
+ diff-lcs (>= 1.2.0, < 2.0)
54
+ rspec-support (~> 3.10.0)
55
+ rspec-support (3.10.2)
56
+ rubocop (1.12.0)
57
+ parallel (~> 1.10)
58
+ parser (>= 3.0.0.0)
59
+ rainbow (>= 2.2.2, < 4.0)
60
+ regexp_parser (>= 1.8, < 3.0)
61
+ rexml
62
+ rubocop-ast (>= 1.2.0, < 2.0)
63
+ ruby-progressbar (~> 1.7)
64
+ unicode-display_width (>= 1.4.0, < 3.0)
65
+ rubocop-ast (1.4.1)
66
+ parser (>= 2.7.1.5)
67
+ ruby-progressbar (1.11.0)
68
+ thor (1.1.0)
69
+ tzinfo (2.0.4)
70
+ concurrent-ruby (~> 1.0)
71
+ unicode-display_width (2.0.0)
72
+ zeitwerk (2.4.2)
73
+
74
+ PLATFORMS
75
+ ruby
76
+ x86_64-darwin-19
77
+
78
+ DEPENDENCIES
79
+ activerecord (~> 6.1.0)
80
+ appraisal
81
+ cursor_pager!
82
+ database_cleaner-active_record
83
+ pg
84
+ rake (~> 12.0)
85
+ rspec (~> 3.0)
86
+ rubocop
87
+
88
+ BUNDLED WITH
89
+ 2.2.15
@@ -3,7 +3,11 @@
3
3
  module CursorPager
4
4
  # Will be raised when the cursor's record couldn't be found in the relation.
5
5
  class CursorNotFoundError < Error
6
+
7
+ attr_reader :cursor
8
+
6
9
  def initialize(cursor)
10
+ @cursor = cursor
7
11
  message = "Couldn't find item for cursor: #{cursor}."
8
12
 
9
13
  super(message)
@@ -60,7 +60,7 @@ module CursorPager
60
60
  @next_page ||= if before_limit_value.present?
61
61
  true
62
62
  elsif first
63
- sliced_relation.limit(first + 1).count == first + 1
63
+ sliced_relation.offset(first).exists?
64
64
  else
65
65
  false
66
66
  end
@@ -147,14 +147,23 @@ module CursorPager
147
147
  end
148
148
 
149
149
  def limit_value_for(cursor)
150
- id = encoder.decode(cursor)
151
-
152
- selects = order_values.map(&:select_string)
153
- item = relation.where(id: id).select(selects).first
150
+ item = limit_item_for(cursor)
154
151
 
155
152
  raise CursorNotFoundError, cursor if item.blank?
156
153
 
157
154
  order_values.map { |value| item[value.select_alias] }
158
155
  end
156
+
157
+ def limit_item_for(cursor)
158
+ id = encoder.decode(cursor)
159
+
160
+ selects = order_values.map(&:select_string)
161
+ ordered_relation_copy = ordered_relation.dup
162
+
163
+ ordered_relation_copy.preload_values = []
164
+ ordered_relation_copy.eager_load_values = []
165
+ ordered_relation_copy
166
+ .unscope(:includes).where(id: id).select(selects).first
167
+ end
159
168
  end
160
169
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CursorPager
4
- VERSION = "0.2.0"
4
+ VERSION = "0.3.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cursor_pager
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bastian Bartmann
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-28 00:00:00.000000000 Z
11
+ date: 2021-06-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -24,7 +24,7 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 5.2.0
27
- description:
27
+ description:
28
28
  email:
29
29
  - bastian.bartmann@check24.de
30
30
  executables: []
@@ -53,6 +53,8 @@ files:
53
53
  - gemfiles/activerecord_5.2.gemfile.lock
54
54
  - gemfiles/activerecord_6.0.gemfile
55
55
  - gemfiles/activerecord_6.0.gemfile.lock
56
+ - gemfiles/activerecord_6.1.gemfile
57
+ - gemfiles/activerecord_6.1.gemfile.lock
56
58
  - lib/cursor_pager.rb
57
59
  - lib/cursor_pager/base64_encoder.rb
58
60
  - lib/cursor_pager/configuration.rb
@@ -66,14 +68,14 @@ files:
66
68
  - lib/cursor_pager/page.rb
67
69
  - lib/cursor_pager/slice_relation.rb
68
70
  - lib/cursor_pager/version.rb
69
- homepage: https://github.com/askcharlie/cursor_pager
71
+ homepage: https://github.com/check24-profis/shared-cursor-pager
70
72
  licenses:
71
73
  - MIT
72
74
  metadata:
73
- homepage_uri: https://github.com/askcharlie/cursor_pager
74
- source_code_uri: https://github.com/askcharlie/cursor_pager
75
- changelog_uri: https://github.com/askcharlie/cursor_pager/blob/master/CHANGELOG.md
76
- post_install_message:
75
+ homepage_uri: https://github.com/check24-profis/shared-cursor-pager
76
+ source_code_uri: https://github.com/check24-profis/shared-cursor-pager
77
+ changelog_uri: https://github.com/check24-profis/shared-cursor-pager/blob/main/CHANGELOG.md
78
+ post_install_message:
77
79
  rdoc_options: []
78
80
  require_paths:
79
81
  - lib
@@ -88,8 +90,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
88
90
  - !ruby/object:Gem::Version
89
91
  version: '0'
90
92
  requirements: []
91
- rubygems_version: 3.1.2
92
- signing_key:
93
+ rubygems_version: 3.1.4
94
+ signing_key:
93
95
  specification_version: 4
94
96
  summary: Cursor-based pagination for ActiveRecord relations.
95
97
  test_files: []