graphql-groups 0.2.3 → 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 +4 -4
- data/.ruby-version +1 -1
- data/Gemfile +12 -0
- data/Gemfile.lock +172 -95
- data/README.md +13 -10
- data/graphql-groups.gemspec +3 -15
- data/lib/graphql/groups/has_aggregates.rb +11 -1
- data/lib/graphql/groups/has_groups.rb +11 -1
- data/lib/graphql/groups/version.rb +1 -1
- metadata +6 -177
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 658c494af8fbcfb5a287c45166a9366cd140eeb109e0b0d98a83b29deca41133
|
|
4
|
+
data.tar.gz: 3e74d9dbc80cd38d94a9db6cdae1d3ab1b1e43bdc24ed58a1788f15e4ff922f1
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 04a88afe08103391c0473ce30c1e94f4641a50fa704cb1e7517cba91597cbb6fad1bc3742b89fc9b9958477ee131b031ca2310782a0b28e8b04e08b55f1261aa
|
|
7
|
+
data.tar.gz: 13946aaafd1cbef4336cb44ee87f16097121827425166d4343c9b06730b28cd33077874cbe564faba4812fcd4b1c680a7d5f3a4c3d05f460e9c8aa3506635dd9
|
data/.ruby-version
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
4.0.1
|
data/Gemfile
CHANGED
|
@@ -2,3 +2,15 @@ source "https://rubygems.org"
|
|
|
2
2
|
|
|
3
3
|
# Specify your gem's dependencies in graphql-groups.gemspec
|
|
4
4
|
gemspec
|
|
5
|
+
|
|
6
|
+
group :development, :test do
|
|
7
|
+
gem 'activerecord', '~> 8'
|
|
8
|
+
gem 'database_cleaner-active_record', '~> 2.1'
|
|
9
|
+
gem 'gqli', '~> 1.0'
|
|
10
|
+
gem 'groupdate', '~> 6.7'
|
|
11
|
+
gem 'rspec', '~> 3.0'
|
|
12
|
+
gem 'rubocop', '~> 1.84'
|
|
13
|
+
gem 'rubocop-rspec', '~> 3.9'
|
|
14
|
+
gem 'simplecov', '~> 0.22'
|
|
15
|
+
gem 'sqlite3', '~> 2.9'
|
|
16
|
+
end
|
data/Gemfile.lock
CHANGED
|
@@ -1,149 +1,226 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
graphql-groups (0.
|
|
4
|
+
graphql-groups (0.3.0)
|
|
5
5
|
graphql (> 1.9)
|
|
6
6
|
|
|
7
7
|
GEM
|
|
8
8
|
remote: https://rubygems.org/
|
|
9
9
|
specs:
|
|
10
|
-
activemodel (
|
|
11
|
-
activesupport (=
|
|
12
|
-
activerecord (
|
|
13
|
-
activemodel (=
|
|
14
|
-
activesupport (=
|
|
10
|
+
activemodel (8.1.2)
|
|
11
|
+
activesupport (= 8.1.2)
|
|
12
|
+
activerecord (8.1.2)
|
|
13
|
+
activemodel (= 8.1.2)
|
|
14
|
+
activesupport (= 8.1.2)
|
|
15
15
|
timeout (>= 0.4.0)
|
|
16
|
-
activesupport (
|
|
16
|
+
activesupport (8.1.2)
|
|
17
17
|
base64
|
|
18
18
|
bigdecimal
|
|
19
19
|
concurrent-ruby (~> 1.0, >= 1.3.1)
|
|
20
20
|
connection_pool (>= 2.2.5)
|
|
21
21
|
drb
|
|
22
22
|
i18n (>= 1.6, < 2)
|
|
23
|
+
json
|
|
23
24
|
logger (>= 1.4.2)
|
|
24
25
|
minitest (>= 5.1)
|
|
25
26
|
securerandom (>= 0.3)
|
|
26
27
|
tzinfo (~> 2.0, >= 2.0.5)
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
bigdecimal (
|
|
33
|
-
concurrent-ruby (1.3.
|
|
34
|
-
connection_pool (
|
|
35
|
-
database_cleaner-active_record (2.2.
|
|
28
|
+
uri (>= 0.13.1)
|
|
29
|
+
addressable (2.8.8)
|
|
30
|
+
public_suffix (>= 2.0.2, < 8.0)
|
|
31
|
+
ast (2.4.3)
|
|
32
|
+
base64 (0.3.0)
|
|
33
|
+
bigdecimal (4.0.1)
|
|
34
|
+
concurrent-ruby (1.3.6)
|
|
35
|
+
connection_pool (3.0.2)
|
|
36
|
+
database_cleaner-active_record (2.2.2)
|
|
36
37
|
activerecord (>= 5.a)
|
|
37
|
-
database_cleaner-core (~> 2.0
|
|
38
|
+
database_cleaner-core (~> 2.0)
|
|
38
39
|
database_cleaner-core (2.0.1)
|
|
39
|
-
diff-lcs (1.
|
|
40
|
+
diff-lcs (1.6.2)
|
|
40
41
|
docile (1.4.1)
|
|
41
|
-
domain_name (0.
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
42
|
+
domain_name (0.6.20240107)
|
|
43
|
+
drb (2.2.3)
|
|
44
|
+
ffi (1.17.3)
|
|
45
|
+
ffi (1.17.3-x86_64-linux-gnu)
|
|
46
|
+
ffi-compiler (1.3.2)
|
|
47
|
+
ffi (>= 1.15.5)
|
|
48
|
+
rake
|
|
49
|
+
fiber-storage (1.0.1)
|
|
50
|
+
gqli (1.2.0)
|
|
51
|
+
hashie (> 3.0)
|
|
52
|
+
http (> 0.8, < 6.0)
|
|
48
53
|
multi_json (~> 1)
|
|
49
|
-
graphql (2.
|
|
54
|
+
graphql (2.5.19)
|
|
50
55
|
base64
|
|
51
56
|
fiber-storage
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
http (2.2.2)
|
|
60
|
-
addressable (~> 2.3)
|
|
57
|
+
logger
|
|
58
|
+
groupdate (6.7.0)
|
|
59
|
+
activesupport (>= 7.1)
|
|
60
|
+
hashie (5.1.0)
|
|
61
|
+
logger
|
|
62
|
+
http (5.3.1)
|
|
63
|
+
addressable (~> 2.8)
|
|
61
64
|
http-cookie (~> 1.0)
|
|
62
|
-
http-form_data (~>
|
|
63
|
-
|
|
64
|
-
http-cookie (1.0
|
|
65
|
+
http-form_data (~> 2.2)
|
|
66
|
+
llhttp-ffi (~> 0.5.0)
|
|
67
|
+
http-cookie (1.1.0)
|
|
65
68
|
domain_name (~> 0.5)
|
|
66
|
-
http-form_data (
|
|
67
|
-
|
|
68
|
-
i18n (1.14.6)
|
|
69
|
+
http-form_data (2.3.0)
|
|
70
|
+
i18n (1.14.8)
|
|
69
71
|
concurrent-ruby (~> 1.0)
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
72
|
+
json (2.18.1)
|
|
73
|
+
language_server-protocol (3.17.0.5)
|
|
74
|
+
lint_roller (1.1.0)
|
|
75
|
+
llhttp-ffi (0.5.1)
|
|
76
|
+
ffi-compiler (~> 1.0)
|
|
77
|
+
rake (~> 13.0)
|
|
78
|
+
logger (1.7.0)
|
|
79
|
+
mini_portile2 (2.8.9)
|
|
80
|
+
minitest (6.0.1)
|
|
81
|
+
prism (~> 1.5)
|
|
82
|
+
multi_json (1.19.1)
|
|
83
|
+
parallel (1.27.0)
|
|
84
|
+
parser (3.3.10.1)
|
|
76
85
|
ast (~> 2.4.1)
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
rspec (3.
|
|
85
|
-
rspec-core (~> 3.
|
|
86
|
-
rspec-expectations (~> 3.
|
|
87
|
-
rspec-mocks (~> 3.
|
|
88
|
-
rspec-core (3.
|
|
89
|
-
rspec-support (~> 3.
|
|
90
|
-
rspec-expectations (3.
|
|
86
|
+
racc
|
|
87
|
+
prism (1.9.0)
|
|
88
|
+
public_suffix (7.0.2)
|
|
89
|
+
racc (1.8.1)
|
|
90
|
+
rainbow (3.1.1)
|
|
91
|
+
rake (13.3.1)
|
|
92
|
+
regexp_parser (2.11.3)
|
|
93
|
+
rspec (3.13.2)
|
|
94
|
+
rspec-core (~> 3.13.0)
|
|
95
|
+
rspec-expectations (~> 3.13.0)
|
|
96
|
+
rspec-mocks (~> 3.13.0)
|
|
97
|
+
rspec-core (3.13.6)
|
|
98
|
+
rspec-support (~> 3.13.0)
|
|
99
|
+
rspec-expectations (3.13.5)
|
|
91
100
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
92
|
-
rspec-support (~> 3.
|
|
93
|
-
rspec-mocks (3.
|
|
101
|
+
rspec-support (~> 3.13.0)
|
|
102
|
+
rspec-mocks (3.13.7)
|
|
94
103
|
diff-lcs (>= 1.2.0, < 2.0)
|
|
95
|
-
rspec-support (~> 3.
|
|
96
|
-
rspec-support (3.
|
|
97
|
-
rubocop (
|
|
104
|
+
rspec-support (~> 3.13.0)
|
|
105
|
+
rspec-support (3.13.7)
|
|
106
|
+
rubocop (1.84.1)
|
|
107
|
+
json (~> 2.3)
|
|
108
|
+
language_server-protocol (~> 3.17.0.2)
|
|
109
|
+
lint_roller (~> 1.1.0)
|
|
98
110
|
parallel (~> 1.10)
|
|
99
|
-
parser (>=
|
|
111
|
+
parser (>= 3.3.0.2)
|
|
100
112
|
rainbow (>= 2.2.2, < 4.0)
|
|
101
|
-
regexp_parser (>=
|
|
102
|
-
|
|
103
|
-
rubocop-ast (>= 0.1.0, < 1.0)
|
|
113
|
+
regexp_parser (>= 2.9.3, < 3.0)
|
|
114
|
+
rubocop-ast (>= 1.49.0, < 2.0)
|
|
104
115
|
ruby-progressbar (~> 1.7)
|
|
105
|
-
unicode-display_width (>=
|
|
106
|
-
rubocop-ast (
|
|
107
|
-
parser (>=
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
116
|
+
unicode-display_width (>= 2.4.0, < 4.0)
|
|
117
|
+
rubocop-ast (1.49.0)
|
|
118
|
+
parser (>= 3.3.7.2)
|
|
119
|
+
prism (~> 1.7)
|
|
120
|
+
rubocop-rspec (3.9.0)
|
|
121
|
+
lint_roller (~> 1.1)
|
|
122
|
+
rubocop (~> 1.81)
|
|
123
|
+
ruby-progressbar (1.13.0)
|
|
124
|
+
securerandom (0.4.1)
|
|
112
125
|
simplecov (0.22.0)
|
|
113
126
|
docile (~> 1.1)
|
|
114
127
|
simplecov-html (~> 0.11)
|
|
115
128
|
simplecov_json_formatter (~> 0.1)
|
|
116
|
-
simplecov-html (0.13.
|
|
129
|
+
simplecov-html (0.13.2)
|
|
117
130
|
simplecov_json_formatter (0.1.4)
|
|
118
|
-
sqlite3 (2.
|
|
131
|
+
sqlite3 (2.9.0)
|
|
119
132
|
mini_portile2 (~> 2.8.0)
|
|
120
|
-
|
|
121
|
-
timeout (0.
|
|
133
|
+
sqlite3 (2.9.0-x86_64-linux-gnu)
|
|
134
|
+
timeout (0.6.0)
|
|
122
135
|
tzinfo (2.0.6)
|
|
123
136
|
concurrent-ruby (~> 1.0)
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
137
|
+
unicode-display_width (3.2.0)
|
|
138
|
+
unicode-emoji (~> 4.1)
|
|
139
|
+
unicode-emoji (4.2.0)
|
|
140
|
+
uri (1.1.1)
|
|
128
141
|
|
|
129
142
|
PLATFORMS
|
|
130
143
|
ruby
|
|
144
|
+
x86_64-linux
|
|
131
145
|
|
|
132
146
|
DEPENDENCIES
|
|
133
|
-
activerecord (~>
|
|
134
|
-
benchmark-ips (~> 2.8)
|
|
135
|
-
bundler (~> 2.0)
|
|
147
|
+
activerecord (~> 8)
|
|
136
148
|
database_cleaner-active_record (~> 2.1)
|
|
137
149
|
gqli (~> 1.0)
|
|
138
150
|
graphql-groups!
|
|
139
|
-
groupdate (~> 6.
|
|
140
|
-
|
|
141
|
-
rake (~> 13.0)
|
|
151
|
+
groupdate (~> 6.7)
|
|
152
|
+
rake (~> 13.3)
|
|
142
153
|
rspec (~> 3.0)
|
|
143
|
-
rubocop (~>
|
|
144
|
-
rubocop-rspec (~>
|
|
154
|
+
rubocop (~> 1.84)
|
|
155
|
+
rubocop-rspec (~> 3.9)
|
|
145
156
|
simplecov (~> 0.22)
|
|
146
|
-
sqlite3 (~> 2.
|
|
157
|
+
sqlite3 (~> 2.9)
|
|
158
|
+
|
|
159
|
+
CHECKSUMS
|
|
160
|
+
activemodel (8.1.2) sha256=e21358c11ce68aed3f9838b7e464977bc007b4446c6e4059781e1d5c03bcf33e
|
|
161
|
+
activerecord (8.1.2) sha256=acfbe0cadfcc50fa208011fe6f4eb01cae682ebae0ef57145ba45380c74bcc44
|
|
162
|
+
activesupport (8.1.2) sha256=88842578ccd0d40f658289b0e8c842acfe9af751afee2e0744a7873f50b6fdae
|
|
163
|
+
addressable (2.8.8) sha256=7c13b8f9536cf6364c03b9d417c19986019e28f7c00ac8132da4eb0fe393b057
|
|
164
|
+
ast (2.4.3) sha256=954615157c1d6a382bc27d690d973195e79db7f55e9765ac7c481c60bdb4d383
|
|
165
|
+
base64 (0.3.0) sha256=27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b
|
|
166
|
+
bigdecimal (4.0.1) sha256=8b07d3d065a9f921c80ceaea7c9d4ae596697295b584c296fe599dd0ad01c4a7
|
|
167
|
+
concurrent-ruby (1.3.6) sha256=6b56837e1e7e5292f9864f34b69c5a2cbc75c0cf5338f1ce9903d10fa762d5ab
|
|
168
|
+
connection_pool (3.0.2) sha256=33fff5ba71a12d2aa26cb72b1db8bba2a1a01823559fb01d29eb74c286e62e0a
|
|
169
|
+
database_cleaner-active_record (2.2.2) sha256=88296b9f3088c31f7c0d4fcec10f68e4b71c96698043916de59b04debec10388
|
|
170
|
+
database_cleaner-core (2.0.1) sha256=8646574c32162e59ed7b5258a97a208d3c44551b854e510994f24683865d846c
|
|
171
|
+
diff-lcs (1.6.2) sha256=9ae0d2cba7d4df3075fe8cd8602a8604993efc0dfa934cff568969efb1909962
|
|
172
|
+
docile (1.4.1) sha256=96159be799bfa73cdb721b840e9802126e4e03dfc26863db73647204c727f21e
|
|
173
|
+
domain_name (0.6.20240107) sha256=5f693b2215708476517479bf2b3802e49068ad82167bcd2286f899536a17d933
|
|
174
|
+
drb (2.2.3) sha256=0b00d6fdb50995fe4a45dea13663493c841112e4068656854646f418fda13373
|
|
175
|
+
ffi (1.17.3) sha256=0e9f39f7bb3934f77ad6feab49662be77e87eedcdeb2a3f5c0234c2938563d4c
|
|
176
|
+
ffi (1.17.3-x86_64-linux-gnu) sha256=3746b01f677aae7b16dc1acb7cb3cc17b3e35bdae7676a3f568153fb0e2c887f
|
|
177
|
+
ffi-compiler (1.3.2) sha256=a94f3d81d12caf5c5d4ecf13980a70d0aeaa72268f3b9cc13358bcc6509184a0
|
|
178
|
+
fiber-storage (1.0.1) sha256=f48e5b6d8b0be96dac486332b55cee82240057065dc761c1ea692b2e719240e1
|
|
179
|
+
gqli (1.2.0) sha256=e0e103a7dc324572ea5dbcbb22a9f8815041bccf078e4da5612d99ab540370de
|
|
180
|
+
graphql (2.5.19) sha256=6c70cf41cbe7d02921fb679229689d181768a45a2a7cc2f39b240cdf3a5fa299
|
|
181
|
+
graphql-groups (0.3.0)
|
|
182
|
+
groupdate (6.7.0) sha256=beaa8d5bf3856814681914a1d4a20e77436a2214b85d0017dc2ea5c355fb6777
|
|
183
|
+
hashie (5.1.0) sha256=c266471896f323c446ea8207f8ffac985d2718df0a0ba98651a3057096ca3870
|
|
184
|
+
http (5.3.1) sha256=c50802d8e9be3926cb84ac3b36d1a31fbbac383bc4cbecdce9053cb604231d7d
|
|
185
|
+
http-cookie (1.1.0) sha256=38a5e60d1527eebc396831b8c4b9455440509881219273a6c99943d29eadbb19
|
|
186
|
+
http-form_data (2.3.0) sha256=cc4eeb1361d9876821e31d7b1cf0b68f1cf874b201d27903480479d86448a5f3
|
|
187
|
+
i18n (1.14.8) sha256=285778639134865c5e0f6269e0b818256017e8cde89993fdfcbfb64d088824a5
|
|
188
|
+
json (2.18.1) sha256=fe112755501b8d0466b5ada6cf50c8c3f41e897fa128ac5d263ec09eedc9f986
|
|
189
|
+
language_server-protocol (3.17.0.5) sha256=fd1e39a51a28bf3eec959379985a72e296e9f9acfce46f6a79d31ca8760803cc
|
|
190
|
+
lint_roller (1.1.0) sha256=2c0c845b632a7d172cb849cc90c1bce937a28c5c8ccccb50dfd46a485003cc87
|
|
191
|
+
llhttp-ffi (0.5.1) sha256=9a25a7fc19311f691a78c9c0ac0fbf4675adbd0cca74310228fdf841018fa7bc
|
|
192
|
+
logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203
|
|
193
|
+
mini_portile2 (2.8.9) sha256=0cd7c7f824e010c072e33f68bc02d85a00aeb6fce05bb4819c03dfd3c140c289
|
|
194
|
+
minitest (6.0.1) sha256=7854c74f48e2e975969062833adc4013f249a4b212f5e7b9d5c040bf838d54bb
|
|
195
|
+
multi_json (1.19.1) sha256=7aefeff8f2c854bf739931a238e4aea64592845e0c0395c8a7d2eea7fdd631b7
|
|
196
|
+
parallel (1.27.0) sha256=4ac151e1806b755fb4e2dc2332cbf0e54f2e24ba821ff2d3dcf86bf6dc4ae130
|
|
197
|
+
parser (3.3.10.1) sha256=06f6a725d2cd91e5e7f2b7c32ba143631e1f7c8ae2fb918fc4cebec187e6a688
|
|
198
|
+
prism (1.9.0) sha256=7b530c6a9f92c24300014919c9dcbc055bf4cdf51ec30aed099b06cd6674ef85
|
|
199
|
+
public_suffix (7.0.2) sha256=9114090c8e4e7135c1fd0e7acfea33afaab38101884320c65aaa0ffb8e26a857
|
|
200
|
+
racc (1.8.1) sha256=4a7f6929691dbec8b5209a0b373bc2614882b55fc5d2e447a21aaa691303d62f
|
|
201
|
+
rainbow (3.1.1) sha256=039491aa3a89f42efa1d6dec2fc4e62ede96eb6acd95e52f1ad581182b79bc6a
|
|
202
|
+
rake (13.3.1) sha256=8c9e89d09f66a26a01264e7e3480ec0607f0c497a861ef16063604b1b08eb19c
|
|
203
|
+
regexp_parser (2.11.3) sha256=ca13f381a173b7a93450e53459075c9b76a10433caadcb2f1180f2c741fc55a4
|
|
204
|
+
rspec (3.13.2) sha256=206284a08ad798e61f86d7ca3e376718d52c0bc944626b2349266f239f820587
|
|
205
|
+
rspec-core (3.13.6) sha256=a8823c6411667b60a8bca135364351dda34cd55e44ff94c4be4633b37d828b2d
|
|
206
|
+
rspec-expectations (3.13.5) sha256=33a4d3a1d95060aea4c94e9f237030a8f9eae5615e9bd85718fe3a09e4b58836
|
|
207
|
+
rspec-mocks (3.13.7) sha256=0979034e64b1d7a838aaaddf12bf065ea4dc40ef3d4c39f01f93ae2c66c62b1c
|
|
208
|
+
rspec-support (3.13.7) sha256=0640e5570872aafefd79867901deeeeb40b0c9875a36b983d85f54fb7381c47c
|
|
209
|
+
rubocop (1.84.1) sha256=14cc626f355141f5a2ef53c10a68d66b13bb30639b26370a76559096cc6bcc1a
|
|
210
|
+
rubocop-ast (1.49.0) sha256=49c3676d3123a0923d333e20c6c2dbaaae2d2287b475273fddee0c61da9f71fd
|
|
211
|
+
rubocop-rspec (3.9.0) sha256=8fa70a3619408237d789aeecfb9beef40576acc855173e60939d63332fdb55e2
|
|
212
|
+
ruby-progressbar (1.13.0) sha256=80fc9c47a9b640d6834e0dc7b3c94c9df37f08cb072b7761e4a71e22cff29b33
|
|
213
|
+
securerandom (0.4.1) sha256=cc5193d414a4341b6e225f0cb4446aceca8e50d5e1888743fac16987638ea0b1
|
|
214
|
+
simplecov (0.22.0) sha256=fe2622c7834ff23b98066bb0a854284b2729a569ac659f82621fc22ef36213a5
|
|
215
|
+
simplecov-html (0.13.2) sha256=bd0b8e54e7c2d7685927e8d6286466359b6f16b18cb0df47b508e8d73c777246
|
|
216
|
+
simplecov_json_formatter (0.1.4) sha256=529418fbe8de1713ac2b2d612aa3daa56d316975d307244399fa4838c601b428
|
|
217
|
+
sqlite3 (2.9.0) sha256=ece9c00b32ec5f550d3a4a35c41ea8d738563589f090b9dfd0d510b7ae5f296c
|
|
218
|
+
sqlite3 (2.9.0-x86_64-linux-gnu) sha256=72fff9bd750070ba3af695511ba5f0e0a2d8a9206f84869640b3e99dfaf3d5a5
|
|
219
|
+
timeout (0.6.0) sha256=6d722ad619f96ee383a0c557ec6eb8c4ecb08af3af62098a0be5057bf00de1af
|
|
220
|
+
tzinfo (2.0.6) sha256=8daf828cc77bcf7d63b0e3bdb6caa47e2272dcfaf4fbfe46f8c3a9df087a829b
|
|
221
|
+
unicode-display_width (3.2.0) sha256=0cdd96b5681a5949cdbc2c55e7b420facae74c4aaf9a9815eee1087cb1853c42
|
|
222
|
+
unicode-emoji (4.2.0) sha256=519e69150f75652e40bf736106cfbc8f0f73aa3fb6a65afe62fefa7f80b0f80f
|
|
223
|
+
uri (1.1.1) sha256=379fa58d27ffb1387eaada68c749d1426738bd0f654d812fcc07e7568f5c57c6
|
|
147
224
|
|
|
148
225
|
BUNDLED WITH
|
|
149
|
-
|
|
226
|
+
4.0.6
|
data/README.md
CHANGED
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://badge.fury.io/rb/graphql-groups)
|
|
4
4
|
[](https://github.com/hschne/graphql-groups/workflows/Build/badge.svg)
|
|
5
|
-
[](https://codeclimate.com/github/hschne/graphql-groups/maintainability)
|
|
6
|
-
[](https://codeclimate.com/github/hschne/graphql-groups/test_coverage)
|
|
7
5
|
|
|
8
6
|
Run group- and aggregation queries with [graphql-ruby](https://github.com/rmosolgo/graphql-ruby).
|
|
9
7
|
|
|
@@ -76,13 +74,6 @@ query myQuery{
|
|
|
76
74
|
|
|
77
75
|
`graphql-groups` allows you to write flexible, readable queries while leveraging your database to aggreate data. It does so by performing an AST analysis on your request and executing exactly the database queries needed to fulfill it. This performs much better than grouping and aggregating in memory. See [performance](#Performance) for a benchmark.
|
|
78
76
|
|
|
79
|
-
|
|
80
|
-
## Advanced Usage
|
|
81
|
-
|
|
82
|
-
For a showcase of what you can do with `graphql-groups` check out [graphql-groups-demo](https://github.com/hschne/graphql-groups-demo)
|
|
83
|
-
|
|
84
|
-
Find a hosted version of the demo app [on Heroku](https://graphql-groups-demo.herokuapp.com/).
|
|
85
|
-
|
|
86
77
|
### Grouping by Multiple Attributes
|
|
87
78
|
|
|
88
79
|
This library really shines when you want to group by multiple attributes, or otherwise retrieve complex statistical information
|
|
@@ -269,7 +260,19 @@ While it is possible to add grouping to your GraphQL schema by using `group_by`
|
|
|
269
260
|
|
|
270
261
|
The benchmark queries the author count grouped by name, using an increasing number of authors. While the in-memory approach of grouping works well for a small number of records, it is outperformed quickly as that number increases.
|
|
271
262
|
|
|
272
|
-
|
|
263
|
+
To run the benchmarks yourself, first install the required gems (note: `gruff` requires ImageMagick):
|
|
264
|
+
|
|
265
|
+
```bash
|
|
266
|
+
gem install benchmark-ips gruff
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
Then generate the benchmark report:
|
|
270
|
+
|
|
271
|
+
```bash
|
|
272
|
+
rake benchmark
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
The benchmark script can be found [here](./benchmark/benchmark.rb).
|
|
273
276
|
|
|
274
277
|
## Limitations and Known Issues
|
|
275
278
|
|
data/graphql-groups.gemspec
CHANGED
|
@@ -31,21 +31,9 @@ Gem::Specification.new do |spec|
|
|
|
31
31
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
32
32
|
spec.require_paths = ['lib']
|
|
33
33
|
|
|
34
|
-
spec.required_ruby_version = Gem::Requirement.new('>= 3.
|
|
35
|
-
|
|
36
|
-
spec.add_development_dependency '
|
|
37
|
-
spec.add_development_dependency 'benchmark-ips', '~> 2.8'
|
|
38
|
-
spec.add_development_dependency 'bundler', '~> 2.0'
|
|
39
|
-
spec.add_development_dependency 'database_cleaner-active_record', '~> 2.1'
|
|
40
|
-
spec.add_development_dependency 'gqli', '~> 1.0'
|
|
41
|
-
spec.add_development_dependency 'groupdate', '~> 6.5.1'
|
|
42
|
-
spec.add_development_dependency 'gruff', '~> 0.10'
|
|
43
|
-
spec.add_development_dependency 'rake', '~> 13.0'
|
|
44
|
-
spec.add_development_dependency 'rspec', '~> 3.0'
|
|
45
|
-
spec.add_development_dependency 'rubocop', '~> 0.88'
|
|
46
|
-
spec.add_development_dependency 'rubocop-rspec', '~> 1.42'
|
|
47
|
-
spec.add_development_dependency 'simplecov', '~> 0.22'
|
|
48
|
-
spec.add_development_dependency 'sqlite3', '~> 2.1.1'
|
|
34
|
+
spec.required_ruby_version = Gem::Requirement.new('>= 3.3.0')
|
|
35
|
+
|
|
36
|
+
spec.add_development_dependency 'rake', '~> 13.3'
|
|
49
37
|
|
|
50
38
|
spec.add_dependency 'graphql', '> 1.9'
|
|
51
39
|
end
|
|
@@ -30,7 +30,17 @@ module GraphQL
|
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
def aggregate_field(*args, **kwargs, &block)
|
|
33
|
-
|
|
33
|
+
if args.any?
|
|
34
|
+
name_arg = args.shift
|
|
35
|
+
type_arg = args.shift
|
|
36
|
+
desc_arg = args.shift
|
|
37
|
+
|
|
38
|
+
kwargs[:name] ||= name_arg
|
|
39
|
+
kwargs[:type] ||= type_arg if type_arg
|
|
40
|
+
kwargs[:description] ||= desc_arg if desc_arg
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
field_defn = Schema::AggregateField.new(owner: self, **kwargs, &block)
|
|
34
44
|
field_defn.ensure_loaded if Gem::Version.new(GraphQL::VERSION) >= Gem::Version.new('2.3')
|
|
35
45
|
add_field(field_defn)
|
|
36
46
|
field_defn
|
|
@@ -37,7 +37,17 @@ module GraphQL
|
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
def group_field(*args, **kwargs, &block)
|
|
40
|
-
|
|
40
|
+
if args.any?
|
|
41
|
+
name_arg = args.shift
|
|
42
|
+
type_arg = args.shift
|
|
43
|
+
desc_arg = args.shift
|
|
44
|
+
|
|
45
|
+
kwargs[:name] ||= name_arg
|
|
46
|
+
kwargs[:type] ||= type_arg if type_arg
|
|
47
|
+
kwargs[:description] ||= desc_arg if desc_arg
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
field_defn = field_class.new(owner: self, **kwargs, &block)
|
|
41
51
|
add_field(field_defn)
|
|
42
52
|
field_defn
|
|
43
53
|
end
|
metadata
CHANGED
|
@@ -1,197 +1,28 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: graphql-groups
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Hans-Jörg Schnedlitz
|
|
8
|
-
autorequire:
|
|
9
8
|
bindir: exe
|
|
10
9
|
cert_chain: []
|
|
11
|
-
date:
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
12
11
|
dependencies:
|
|
13
|
-
- !ruby/object:Gem::Dependency
|
|
14
|
-
name: activerecord
|
|
15
|
-
requirement: !ruby/object:Gem::Requirement
|
|
16
|
-
requirements:
|
|
17
|
-
- - "~>"
|
|
18
|
-
- !ruby/object:Gem::Version
|
|
19
|
-
version: '7.2'
|
|
20
|
-
type: :development
|
|
21
|
-
prerelease: false
|
|
22
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
-
requirements:
|
|
24
|
-
- - "~>"
|
|
25
|
-
- !ruby/object:Gem::Version
|
|
26
|
-
version: '7.2'
|
|
27
|
-
- !ruby/object:Gem::Dependency
|
|
28
|
-
name: benchmark-ips
|
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
|
30
|
-
requirements:
|
|
31
|
-
- - "~>"
|
|
32
|
-
- !ruby/object:Gem::Version
|
|
33
|
-
version: '2.8'
|
|
34
|
-
type: :development
|
|
35
|
-
prerelease: false
|
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
-
requirements:
|
|
38
|
-
- - "~>"
|
|
39
|
-
- !ruby/object:Gem::Version
|
|
40
|
-
version: '2.8'
|
|
41
|
-
- !ruby/object:Gem::Dependency
|
|
42
|
-
name: bundler
|
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
|
44
|
-
requirements:
|
|
45
|
-
- - "~>"
|
|
46
|
-
- !ruby/object:Gem::Version
|
|
47
|
-
version: '2.0'
|
|
48
|
-
type: :development
|
|
49
|
-
prerelease: false
|
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
-
requirements:
|
|
52
|
-
- - "~>"
|
|
53
|
-
- !ruby/object:Gem::Version
|
|
54
|
-
version: '2.0'
|
|
55
|
-
- !ruby/object:Gem::Dependency
|
|
56
|
-
name: database_cleaner-active_record
|
|
57
|
-
requirement: !ruby/object:Gem::Requirement
|
|
58
|
-
requirements:
|
|
59
|
-
- - "~>"
|
|
60
|
-
- !ruby/object:Gem::Version
|
|
61
|
-
version: '2.1'
|
|
62
|
-
type: :development
|
|
63
|
-
prerelease: false
|
|
64
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
-
requirements:
|
|
66
|
-
- - "~>"
|
|
67
|
-
- !ruby/object:Gem::Version
|
|
68
|
-
version: '2.1'
|
|
69
|
-
- !ruby/object:Gem::Dependency
|
|
70
|
-
name: gqli
|
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
|
72
|
-
requirements:
|
|
73
|
-
- - "~>"
|
|
74
|
-
- !ruby/object:Gem::Version
|
|
75
|
-
version: '1.0'
|
|
76
|
-
type: :development
|
|
77
|
-
prerelease: false
|
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
-
requirements:
|
|
80
|
-
- - "~>"
|
|
81
|
-
- !ruby/object:Gem::Version
|
|
82
|
-
version: '1.0'
|
|
83
|
-
- !ruby/object:Gem::Dependency
|
|
84
|
-
name: groupdate
|
|
85
|
-
requirement: !ruby/object:Gem::Requirement
|
|
86
|
-
requirements:
|
|
87
|
-
- - "~>"
|
|
88
|
-
- !ruby/object:Gem::Version
|
|
89
|
-
version: 6.5.1
|
|
90
|
-
type: :development
|
|
91
|
-
prerelease: false
|
|
92
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
93
|
-
requirements:
|
|
94
|
-
- - "~>"
|
|
95
|
-
- !ruby/object:Gem::Version
|
|
96
|
-
version: 6.5.1
|
|
97
|
-
- !ruby/object:Gem::Dependency
|
|
98
|
-
name: gruff
|
|
99
|
-
requirement: !ruby/object:Gem::Requirement
|
|
100
|
-
requirements:
|
|
101
|
-
- - "~>"
|
|
102
|
-
- !ruby/object:Gem::Version
|
|
103
|
-
version: '0.10'
|
|
104
|
-
type: :development
|
|
105
|
-
prerelease: false
|
|
106
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
107
|
-
requirements:
|
|
108
|
-
- - "~>"
|
|
109
|
-
- !ruby/object:Gem::Version
|
|
110
|
-
version: '0.10'
|
|
111
12
|
- !ruby/object:Gem::Dependency
|
|
112
13
|
name: rake
|
|
113
14
|
requirement: !ruby/object:Gem::Requirement
|
|
114
15
|
requirements:
|
|
115
16
|
- - "~>"
|
|
116
17
|
- !ruby/object:Gem::Version
|
|
117
|
-
version: '13.
|
|
118
|
-
type: :development
|
|
119
|
-
prerelease: false
|
|
120
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
121
|
-
requirements:
|
|
122
|
-
- - "~>"
|
|
123
|
-
- !ruby/object:Gem::Version
|
|
124
|
-
version: '13.0'
|
|
125
|
-
- !ruby/object:Gem::Dependency
|
|
126
|
-
name: rspec
|
|
127
|
-
requirement: !ruby/object:Gem::Requirement
|
|
128
|
-
requirements:
|
|
129
|
-
- - "~>"
|
|
130
|
-
- !ruby/object:Gem::Version
|
|
131
|
-
version: '3.0'
|
|
132
|
-
type: :development
|
|
133
|
-
prerelease: false
|
|
134
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
135
|
-
requirements:
|
|
136
|
-
- - "~>"
|
|
137
|
-
- !ruby/object:Gem::Version
|
|
138
|
-
version: '3.0'
|
|
139
|
-
- !ruby/object:Gem::Dependency
|
|
140
|
-
name: rubocop
|
|
141
|
-
requirement: !ruby/object:Gem::Requirement
|
|
142
|
-
requirements:
|
|
143
|
-
- - "~>"
|
|
144
|
-
- !ruby/object:Gem::Version
|
|
145
|
-
version: '0.88'
|
|
146
|
-
type: :development
|
|
147
|
-
prerelease: false
|
|
148
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
149
|
-
requirements:
|
|
150
|
-
- - "~>"
|
|
151
|
-
- !ruby/object:Gem::Version
|
|
152
|
-
version: '0.88'
|
|
153
|
-
- !ruby/object:Gem::Dependency
|
|
154
|
-
name: rubocop-rspec
|
|
155
|
-
requirement: !ruby/object:Gem::Requirement
|
|
156
|
-
requirements:
|
|
157
|
-
- - "~>"
|
|
158
|
-
- !ruby/object:Gem::Version
|
|
159
|
-
version: '1.42'
|
|
160
|
-
type: :development
|
|
161
|
-
prerelease: false
|
|
162
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
163
|
-
requirements:
|
|
164
|
-
- - "~>"
|
|
165
|
-
- !ruby/object:Gem::Version
|
|
166
|
-
version: '1.42'
|
|
167
|
-
- !ruby/object:Gem::Dependency
|
|
168
|
-
name: simplecov
|
|
169
|
-
requirement: !ruby/object:Gem::Requirement
|
|
170
|
-
requirements:
|
|
171
|
-
- - "~>"
|
|
172
|
-
- !ruby/object:Gem::Version
|
|
173
|
-
version: '0.22'
|
|
174
|
-
type: :development
|
|
175
|
-
prerelease: false
|
|
176
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
177
|
-
requirements:
|
|
178
|
-
- - "~>"
|
|
179
|
-
- !ruby/object:Gem::Version
|
|
180
|
-
version: '0.22'
|
|
181
|
-
- !ruby/object:Gem::Dependency
|
|
182
|
-
name: sqlite3
|
|
183
|
-
requirement: !ruby/object:Gem::Requirement
|
|
184
|
-
requirements:
|
|
185
|
-
- - "~>"
|
|
186
|
-
- !ruby/object:Gem::Version
|
|
187
|
-
version: 2.1.1
|
|
18
|
+
version: '13.3'
|
|
188
19
|
type: :development
|
|
189
20
|
prerelease: false
|
|
190
21
|
version_requirements: !ruby/object:Gem::Requirement
|
|
191
22
|
requirements:
|
|
192
23
|
- - "~>"
|
|
193
24
|
- !ruby/object:Gem::Version
|
|
194
|
-
version:
|
|
25
|
+
version: '13.3'
|
|
195
26
|
- !ruby/object:Gem::Dependency
|
|
196
27
|
name: graphql
|
|
197
28
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -252,7 +83,6 @@ metadata:
|
|
|
252
83
|
homepage_uri: https://github.com/hschne/graphql-groups
|
|
253
84
|
source_code_uri: https://github.com/hschne/graphql-groups
|
|
254
85
|
changelog_uri: https://github.com/hschne/graphql-groups/blob/master/CHANGELOG.md
|
|
255
|
-
post_install_message:
|
|
256
86
|
rdoc_options: []
|
|
257
87
|
require_paths:
|
|
258
88
|
- lib
|
|
@@ -260,15 +90,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
260
90
|
requirements:
|
|
261
91
|
- - ">="
|
|
262
92
|
- !ruby/object:Gem::Version
|
|
263
|
-
version: 3.
|
|
93
|
+
version: 3.3.0
|
|
264
94
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
265
95
|
requirements:
|
|
266
96
|
- - ">="
|
|
267
97
|
- !ruby/object:Gem::Version
|
|
268
98
|
version: '0'
|
|
269
99
|
requirements: []
|
|
270
|
-
rubygems_version:
|
|
271
|
-
signing_key:
|
|
100
|
+
rubygems_version: 4.0.3
|
|
272
101
|
specification_version: 4
|
|
273
102
|
summary: Create flexible and fast aggregation queries with graphql-ruby
|
|
274
103
|
test_files: []
|