pagy_cursor 0.2.0 → 0.2.1
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 +4 -4
- data/.github/workflows/ci.yml +104 -0
- data/Gemfile.lock +9 -7
- data/README.md +3 -4
- data/lib/pagy_cursor/pagy/extras/cursor.rb +4 -5
- data/lib/pagy_cursor/pagy/extras/uuid_cursor.rb +3 -4
- data/lib/pagy_cursor/version.rb +1 -1
- data/pagy_cursor.gemspec +1 -1
- metadata +8 -7
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: db5bbbc8ad4eeacb38c8f09bf5ce0e7b740741f128e955a04edad241ca164b47
|
|
4
|
+
data.tar.gz: 89c124e2905ab7f3a9e60ed6afc74576066faa55fcc028f42142bf07056400ee
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 023b19a137c638a766107721ec7e728d0ebfa6b32788686a9edaeecc469d04b609519bf0bc8c72d807f396338fdb294f185d8c538f62386e1c00e8f702eb4232
|
|
7
|
+
data.tar.gz: 7d8731348178705c581d886f8b3f409e5e661cd90a93dd6e1fb79aede4ecbc1c625e5142d7ec65c624a8d7e0fc673907ca98fabb7ba313d8e58af9c01dc16e73
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
name: Pagy Cursor CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: ['**']
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: ['**']
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
postgres_test:
|
|
11
|
+
name: Ruby ${{ matrix.ruby-version }} Test with postgresql
|
|
12
|
+
|
|
13
|
+
runs-on: ubuntu-latest
|
|
14
|
+
|
|
15
|
+
services:
|
|
16
|
+
postgres:
|
|
17
|
+
image: postgres
|
|
18
|
+
env:
|
|
19
|
+
POSTGRES_USER: postgres
|
|
20
|
+
POSTGRES_PASSWORD: postgres
|
|
21
|
+
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
|
|
22
|
+
ports:
|
|
23
|
+
- 5432:5432
|
|
24
|
+
|
|
25
|
+
strategy:
|
|
26
|
+
matrix:
|
|
27
|
+
include:
|
|
28
|
+
- ruby-version: 2.5
|
|
29
|
+
env:
|
|
30
|
+
BUNDLE_GEMFILE: gemfiles/active_record_50.gemfile
|
|
31
|
+
- ruby-version: 2.6
|
|
32
|
+
env:
|
|
33
|
+
BUNDLE_GEMFILE: gemfiles/active_record_51.gemfile
|
|
34
|
+
- ruby-version: 2.7
|
|
35
|
+
env:
|
|
36
|
+
BUNDLE_GEMFILE: gemfiles/active_record_52.gemfile
|
|
37
|
+
- ruby-version: 3.0
|
|
38
|
+
env:
|
|
39
|
+
BUNDLE_GEMFILE: gemfiles/active_record_60.gemfile
|
|
40
|
+
|
|
41
|
+
fail-fast: false
|
|
42
|
+
env: ${{ matrix.env }}
|
|
43
|
+
|
|
44
|
+
steps:
|
|
45
|
+
- uses: actions/checkout@v2
|
|
46
|
+
|
|
47
|
+
- name: Set up ruby
|
|
48
|
+
uses: ruby/setup-ruby@v1
|
|
49
|
+
with:
|
|
50
|
+
ruby-version: ${{ matrix.ruby-version }}
|
|
51
|
+
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
|
52
|
+
|
|
53
|
+
- name: Run Ruby Tests
|
|
54
|
+
run: bundle exec rspec
|
|
55
|
+
env:
|
|
56
|
+
DB: postgresql
|
|
57
|
+
DB_PASSWORD: postgres
|
|
58
|
+
|
|
59
|
+
mysql_test:
|
|
60
|
+
name: Ruby ${{ matrix.ruby-version }} Test with mysql
|
|
61
|
+
|
|
62
|
+
runs-on: ubuntu-latest
|
|
63
|
+
|
|
64
|
+
services:
|
|
65
|
+
mysql:
|
|
66
|
+
image: mysql
|
|
67
|
+
env:
|
|
68
|
+
MYSQL_PASSWORD: rootpassword
|
|
69
|
+
MYSQL_ROOT_PASSWORD: rootpassword
|
|
70
|
+
ports:
|
|
71
|
+
- 3306:3306
|
|
72
|
+
options: --health-cmd "mysqladmin ping" --health-interval 10s --health-timeout 5s --health-retries 10
|
|
73
|
+
|
|
74
|
+
strategy:
|
|
75
|
+
matrix:
|
|
76
|
+
include:
|
|
77
|
+
- ruby-version: 2.5
|
|
78
|
+
env:
|
|
79
|
+
BUNDLE_GEMFILE: gemfiles/active_record_50.gemfile
|
|
80
|
+
- ruby-version: 2.6
|
|
81
|
+
env:
|
|
82
|
+
BUNDLE_GEMFILE: gemfiles/active_record_51.gemfile
|
|
83
|
+
- ruby-version: 2.7
|
|
84
|
+
env:
|
|
85
|
+
BUNDLE_GEMFILE: gemfiles/active_record_52.gemfile
|
|
86
|
+
- ruby-version: 3.0
|
|
87
|
+
env:
|
|
88
|
+
BUNDLE_GEMFILE: gemfiles/active_record_60.gemfile
|
|
89
|
+
fail-fast: false
|
|
90
|
+
env: ${{ matrix.env }}
|
|
91
|
+
steps:
|
|
92
|
+
- uses: actions/checkout@v2
|
|
93
|
+
|
|
94
|
+
- name: Set up ruby
|
|
95
|
+
uses: ruby/setup-ruby@v1
|
|
96
|
+
with:
|
|
97
|
+
ruby-version: ${{ matrix.ruby-version }}
|
|
98
|
+
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
|
99
|
+
|
|
100
|
+
- name: Run Ruby Tests
|
|
101
|
+
run: bundle exec rspec
|
|
102
|
+
env:
|
|
103
|
+
DB: mysql
|
|
104
|
+
DB_PASSWORD: rootpassword
|
data/Gemfile.lock
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
pagy_cursor (0.
|
|
4
|
+
pagy_cursor (0.2.0)
|
|
5
5
|
activerecord (>= 5)
|
|
6
6
|
pagy
|
|
7
7
|
|
|
@@ -83,18 +83,20 @@ GEM
|
|
|
83
83
|
method_source (0.9.2)
|
|
84
84
|
mimemagic (0.3.4)
|
|
85
85
|
mini_mime (1.0.2)
|
|
86
|
-
mini_portile2 (2.
|
|
86
|
+
mini_portile2 (2.6.1)
|
|
87
87
|
minitest (5.14.0)
|
|
88
88
|
mysql2 (0.5.3)
|
|
89
89
|
nio4r (2.5.2)
|
|
90
|
-
nokogiri (1.
|
|
91
|
-
mini_portile2 (~> 2.
|
|
92
|
-
|
|
90
|
+
nokogiri (1.12.5)
|
|
91
|
+
mini_portile2 (~> 2.6.1)
|
|
92
|
+
racc (~> 1.4)
|
|
93
|
+
pagy (3.8.2)
|
|
93
94
|
pg (1.2.2)
|
|
94
95
|
pry (0.12.2)
|
|
95
96
|
coderay (~> 1.1.0)
|
|
96
97
|
method_source (~> 0.9.0)
|
|
97
|
-
|
|
98
|
+
racc (1.5.2)
|
|
99
|
+
rack (2.2.3)
|
|
98
100
|
rack-test (1.1.0)
|
|
99
101
|
rack (>= 1.0, < 3)
|
|
100
102
|
rails (6.0.2.1)
|
|
@@ -151,7 +153,7 @@ GEM
|
|
|
151
153
|
thread_safe (~> 0.1)
|
|
152
154
|
websocket-driver (0.7.1)
|
|
153
155
|
websocket-extensions (>= 0.1.0)
|
|
154
|
-
websocket-extensions (0.1.
|
|
156
|
+
websocket-extensions (0.1.5)
|
|
155
157
|
zeitwerk (2.3.0)
|
|
156
158
|
|
|
157
159
|
PLATFORMS
|
data/README.md
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
|
|
2
2
|
# PagyCursor
|
|
3
|
-

|
|
4
3
|
|
|
5
4
|
Extra [Pagy](https://github.com/ddnexus/pagy) to work with cursor pagination
|
|
6
5
|
|
|
@@ -23,7 +22,7 @@ Include the backend in some controller:
|
|
|
23
22
|
|
|
24
23
|
```ruby
|
|
25
24
|
require "pagy_cursor/pagy/extras/cursor"
|
|
26
|
-
require "pagy_cursor/pagy/extras/
|
|
25
|
+
require "pagy_cursor/pagy/extras/uuid_cursor"
|
|
27
26
|
|
|
28
27
|
include Pagy::Backend
|
|
29
28
|
```
|
|
@@ -73,8 +72,8 @@ To run tests in root folder of gem:
|
|
|
73
72
|
- ```bundle install```
|
|
74
73
|
- ```bundle exec rspec ```
|
|
75
74
|
|
|
76
|
-
To test on specific Rails
|
|
77
|
-
```export BUNDLE_GEMFILE=gemfiles/
|
|
75
|
+
To test on specific Rails version
|
|
76
|
+
```export BUNDLE_GEMFILE=gemfiles/active_record_52.gemfile``` to work with Rails 5.2
|
|
78
77
|
|
|
79
78
|
To play with app cd test/dummy and rails s -b 0.0.0.0 (before rails db:migrate).
|
|
80
79
|
|
|
@@ -10,7 +10,7 @@ class Pagy
|
|
|
10
10
|
items = pagy_cursor_get_items(collection, pagy, pagy.position)
|
|
11
11
|
pagy.has_more = pagy_cursor_has_more?(items, pagy)
|
|
12
12
|
|
|
13
|
-
return pagy, items
|
|
13
|
+
return pagy, items[0..pagy.items-1]
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
def pagy_cursor_get_vars(collection, vars)
|
|
@@ -23,17 +23,16 @@ class Pagy
|
|
|
23
23
|
def pagy_cursor_get_items(collection, pagy, position=nil)
|
|
24
24
|
if position.present?
|
|
25
25
|
sql_comparation = pagy.arel_table[pagy.primary_key].send(pagy.comparation, position)
|
|
26
|
-
collection.where(sql_comparation).reorder(pagy.order).limit(pagy.items)
|
|
26
|
+
collection.where(sql_comparation).reorder(pagy.order).limit(pagy.items + 1)
|
|
27
27
|
else
|
|
28
|
-
collection.reorder(pagy.order).limit(pagy.items)
|
|
28
|
+
collection.reorder(pagy.order).limit(pagy.items + 1)
|
|
29
29
|
end
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
def pagy_cursor_has_more?(collection, pagy)
|
|
33
33
|
return false if collection.empty?
|
|
34
34
|
|
|
35
|
-
|
|
36
|
-
pagy_cursor_get_items(collection, pagy, next_position).exists?
|
|
35
|
+
collection.size > pagy.items
|
|
37
36
|
end
|
|
38
37
|
end
|
|
39
38
|
end
|
|
@@ -9,7 +9,7 @@ class Pagy
|
|
|
9
9
|
items = pagy_uuid_cursor_get_items(collection, pagy, pagy.position)
|
|
10
10
|
pagy.has_more = pagy_uuid_cursor_has_more?(items, pagy)
|
|
11
11
|
|
|
12
|
-
return pagy, items
|
|
12
|
+
return pagy, items[0..pagy.items-1]
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
def pagy_uuid_cursor_get_vars(collection, vars)
|
|
@@ -29,14 +29,13 @@ class Pagy
|
|
|
29
29
|
|
|
30
30
|
collection = collection.where(sql_comparation)
|
|
31
31
|
end
|
|
32
|
-
collection.reorder(pagy.order).limit(pagy.items)
|
|
32
|
+
collection.reorder(pagy.order).limit(pagy.items + 1)
|
|
33
33
|
end
|
|
34
34
|
|
|
35
35
|
def pagy_uuid_cursor_has_more?(collection, pagy)
|
|
36
36
|
return false if collection.empty?
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
pagy_uuid_cursor_get_items(collection, pagy, next_position).exists?
|
|
38
|
+
collection.size > pagy.items
|
|
40
39
|
end
|
|
41
40
|
end
|
|
42
41
|
end
|
data/lib/pagy_cursor/version.rb
CHANGED
data/pagy_cursor.gemspec
CHANGED
|
@@ -22,7 +22,7 @@ Gem::Specification.new do |spec|
|
|
|
22
22
|
spec.bindir = "exe"
|
|
23
23
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
24
24
|
spec.require_paths = ["lib"]
|
|
25
|
-
spec.add_dependency "pagy"
|
|
25
|
+
spec.add_dependency "pagy", "< 5"
|
|
26
26
|
spec.add_dependency "activerecord", ">= 5"
|
|
27
27
|
|
|
28
28
|
spec.add_development_dependency "bundler", "~> 2.0"
|
metadata
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: pagy_cursor
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.2.
|
|
4
|
+
version: 0.2.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Uysim
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2021-11-16 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: pagy
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- - "
|
|
17
|
+
- - "<"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '
|
|
19
|
+
version: '5'
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
|
-
- - "
|
|
24
|
+
- - "<"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '
|
|
26
|
+
version: '5'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: activerecord
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -87,6 +87,7 @@ executables: []
|
|
|
87
87
|
extensions: []
|
|
88
88
|
extra_rdoc_files: []
|
|
89
89
|
files:
|
|
90
|
+
- ".github/workflows/ci.yml"
|
|
90
91
|
- ".github/workflows/gempush.yml"
|
|
91
92
|
- ".gitignore"
|
|
92
93
|
- ".rspec"
|
|
@@ -127,7 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
127
128
|
- !ruby/object:Gem::Version
|
|
128
129
|
version: '0'
|
|
129
130
|
requirements: []
|
|
130
|
-
rubygems_version: 3.
|
|
131
|
+
rubygems_version: 3.2.22
|
|
131
132
|
signing_key:
|
|
132
133
|
specification_version: 4
|
|
133
134
|
summary: cursor paginations for pagy
|