graphql_rails 1.0.0 → 1.2.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +4 -4
  2. data/.hound.yml +1 -0
  3. data/.rubocop.yml +3 -3
  4. data/.ruby-version +1 -1
  5. data/.travis.yml +2 -2
  6. data/CHANGELOG.md +22 -0
  7. data/Gemfile +3 -2
  8. data/Gemfile.lock +145 -119
  9. data/docs/README.md +3 -3
  10. data/docs/components/controller.md +23 -7
  11. data/docs/components/model.md +43 -3
  12. data/docs/getting_started/quick_start.md +1 -1
  13. data/docs/index.html +1 -1
  14. data/docs/other_tools/query_runner.md +1 -1
  15. data/docs/other_tools/schema_dump.md +1 -1
  16. data/graphql_rails.gemspec +5 -5
  17. data/lib/generators/graphql_rails/templates/graphql_router_spec.erb +10 -7
  18. data/lib/graphql_rails/attributes/attributable.rb +5 -9
  19. data/lib/graphql_rails/attributes/attribute.rb +26 -6
  20. data/lib/graphql_rails/attributes/attribute_name_parser.rb +4 -4
  21. data/lib/graphql_rails/attributes/input_attribute.rb +5 -1
  22. data/lib/graphql_rails/attributes/type_parseable.rb +17 -13
  23. data/lib/graphql_rails/concerns/service.rb +6 -2
  24. data/lib/graphql_rails/controller.rb +6 -6
  25. data/lib/graphql_rails/controller/action.rb +5 -1
  26. data/lib/graphql_rails/controller/build_controller_action_resolver.rb +2 -2
  27. data/lib/graphql_rails/controller/log_controller_action.rb +7 -2
  28. data/lib/graphql_rails/controller/request.rb +1 -1
  29. data/lib/graphql_rails/controller/request/format_errors.rb +1 -1
  30. data/lib/graphql_rails/decorator/relation_decorator.rb +0 -4
  31. data/lib/graphql_rails/model/add_fields_to_graphql_type.rb +45 -0
  32. data/lib/graphql_rails/model/build_connection_type.rb +5 -1
  33. data/lib/graphql_rails/model/build_connection_type/count_items.rb +2 -2
  34. data/lib/graphql_rails/model/build_graphql_input_type.rb +1 -1
  35. data/lib/graphql_rails/model/call_graphql_model_method.rb +14 -1
  36. data/lib/graphql_rails/model/configurable.rb +6 -2
  37. data/lib/graphql_rails/model/configuration.rb +9 -4
  38. data/lib/graphql_rails/model/find_or_build_graphql_type.rb +64 -0
  39. data/lib/graphql_rails/model/find_or_build_graphql_type_class.rb +46 -0
  40. data/lib/graphql_rails/router.rb +2 -2
  41. data/lib/graphql_rails/router/resource_routes_builder.rb +8 -8
  42. data/lib/graphql_rails/router/route.rb +3 -7
  43. data/lib/graphql_rails/router/schema_builder.rb +5 -1
  44. data/lib/graphql_rails/rspec_controller_helpers.rb +2 -2
  45. data/lib/graphql_rails/version.rb +1 -1
  46. metadata +25 -18
  47. data/lib/graphql_rails/model/build_graphql_type.rb +0 -53
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fcc5df5d34e3bf317dd9bb07e2b846bf8dfa48e990258b4bb2f30ef73d049939
4
- data.tar.gz: 6cd112b22a0d01f031dd2aba92efc390d44b209c8d6a428e257d1be99377f28c
3
+ metadata.gz: 95b29ebcb8c062456b3709134aca3184037fabc4d1f5dc6e8440f712065b8b9d
4
+ data.tar.gz: 7b177bb136a4bedffaf9c9836db393713d88d531de3cb302f89ec52c652dc56a
5
5
  SHA512:
6
- metadata.gz: 59f24a1ad00e309c7617a6ed65200dc11f62680974f3de7ca4e36d96b0d8dab8f286c8c9c4b50dd4b70a375959187ce21d09a309075a4ffa009716d3b74e7df7
7
- data.tar.gz: ca1500174b1443240db65e3b57dbe0616ad7038da3e6f833ca2979e2fb4de7074c8ce9671c55dfa07bb327f4469b7999b8f00769a686c8829abfcf2eb275b6e0
6
+ metadata.gz: 6aa73c56c429120d6d6aa534075bee9e36cf4d0fa18d2169e89afb81965eb06e90e3d595f214faf4af1ff91aadcb2fbea9be6ceaf569321be57a9ca654d7bb0f
7
+ data.tar.gz: 85fbd80f9a00833636e65941c78e14e0696d55a8b1a3b4530d1a143341d86a152ad3f5879dcf2f9f2b308b297a31cdaa1ed144ad9e50533a9b5e244584a35b87
data/.hound.yml CHANGED
@@ -1,3 +1,4 @@
1
1
  rubocop:
2
2
  config_file: .rubocop.yml
3
+ version: 0.91.0
3
4
  fail_on_violations: true
data/.rubocop.yml CHANGED
@@ -3,7 +3,7 @@ require: rubocop-rspec
3
3
  RSpec/NestedGroups:
4
4
  Enabled: false
5
5
 
6
- Metrics/LineLength:
6
+ Layout/LineLength:
7
7
  Enabled: true
8
8
  Max: 120
9
9
 
@@ -21,7 +21,7 @@ Lint/AmbiguousBlockAssociation:
21
21
  Exclude:
22
22
  - spec/**/*.rb
23
23
 
24
- Naming/UncommunicativeMethodParamName:
24
+ Naming/MethodParameterName:
25
25
  AllowedNames:
26
26
  - 'to'
27
27
  - 'at'
@@ -35,7 +35,7 @@ Style/ClassAndModuleChildren:
35
35
  - spec/**/*_spec.rb
36
36
 
37
37
  AllCops:
38
- TargetRubyVersion: 2.5
38
+ TargetRubyVersion: 2.7
39
39
  Exclude:
40
40
  - bin/*
41
41
  - graphql_rails.gemspec
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.5.1
1
+ 2.7.1
data/.travis.yml CHANGED
@@ -1,5 +1,5 @@
1
1
  sudo: false
2
2
  language: ruby
3
3
  rvm:
4
- - 2.5.1
5
- before_install: gem install bundler -v 1.16.1
4
+ - 2.7.1
5
+ before_install: gem install bundler -v 2.1.4
data/CHANGELOG.md CHANGED
@@ -9,6 +9,28 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
9
9
 
10
10
  * Added/Changed/Deprecated/Removed/Fixed/Security: YOUR CHANGE HERE
11
11
 
12
+ ## [1.2.3](2021-04-12)
13
+
14
+ * Fixed: Total count on paginated resources
15
+
16
+ ## [1.2.2](2021-02-19)
17
+
18
+ * Fixed: Incorrect type resolution for required list type fields in model declaration.
19
+
20
+ ## [1.2.1](2021-02-17)
21
+
22
+ * Fixed: Incorrect scalar types resolution is fixed. No more `type mismatch between ID / ID`
23
+
24
+ ## [1.2.0](2021-02-15)
25
+
26
+ * Added: `options` argument to model level attribute. Allows disabling automatic camelCase
27
+ * Fixed: methods with complex input arguments receives `Hash` instances instead of `GraphQL::Schema::InputObject`
28
+ * Fixed: Using `ActiveSupport::ParameterFilter` (Rails 6.1), if it is defined, instead of `ActionDispatch::Http::ParameterFilter`
29
+ * Changed: graphql version is now `1.12` which may require system-wide changes.
30
+ * Fixed: improved connection wrapper for pagination to work.
31
+ * Fixed: implementation of `total` field is no longer missing when using pagination.
32
+
33
+
12
34
  ## [1.0.0](2020-02-07)
13
35
 
14
36
  * Added: "required" and "optional" flags for attribute
data/Gemfile CHANGED
@@ -5,8 +5,9 @@ source 'https://rubygems.org'
5
5
  git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
6
6
 
7
7
  group :development do
8
- gem 'rubocop'
9
- gem 'rubocop-rspec'
8
+ gem 'rubocop', '0.91.0'
9
+ gem 'rubocop-performance', '~> 1.8', '>= 1.8.1'
10
+ gem 'rubocop-rspec', '~> 1.44', '>= 1.44.1'
10
11
  end
11
12
 
12
13
  group :test do
data/Gemfile.lock CHANGED
@@ -1,194 +1,220 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- graphql_rails (1.0.0)
4
+ graphql_rails (1.2.3)
5
5
  activesupport (>= 4)
6
- graphql (>= 1.9.12)
6
+ graphql (~> 1.12, >= 1.12.4)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- actioncable (5.2.2.1)
12
- actionpack (= 5.2.2.1)
11
+ actioncable (6.0.3.4)
12
+ actionpack (= 6.0.3.4)
13
13
  nio4r (~> 2.0)
14
14
  websocket-driver (>= 0.6.1)
15
- actionmailer (5.2.2.1)
16
- actionpack (= 5.2.2.1)
17
- actionview (= 5.2.2.1)
18
- activejob (= 5.2.2.1)
15
+ actionmailbox (6.0.3.4)
16
+ actionpack (= 6.0.3.4)
17
+ activejob (= 6.0.3.4)
18
+ activerecord (= 6.0.3.4)
19
+ activestorage (= 6.0.3.4)
20
+ activesupport (= 6.0.3.4)
21
+ mail (>= 2.7.1)
22
+ actionmailer (6.0.3.4)
23
+ actionpack (= 6.0.3.4)
24
+ actionview (= 6.0.3.4)
25
+ activejob (= 6.0.3.4)
19
26
  mail (~> 2.5, >= 2.5.4)
20
27
  rails-dom-testing (~> 2.0)
21
- actionpack (5.2.2.1)
22
- actionview (= 5.2.2.1)
23
- activesupport (= 5.2.2.1)
24
- rack (~> 2.0)
28
+ actionpack (6.0.3.4)
29
+ actionview (= 6.0.3.4)
30
+ activesupport (= 6.0.3.4)
31
+ rack (~> 2.0, >= 2.0.8)
25
32
  rack-test (>= 0.6.3)
26
33
  rails-dom-testing (~> 2.0)
27
- rails-html-sanitizer (~> 1.0, >= 1.0.2)
28
- actionview (5.2.2.1)
29
- activesupport (= 5.2.2.1)
34
+ rails-html-sanitizer (~> 1.0, >= 1.2.0)
35
+ actiontext (6.0.3.4)
36
+ actionpack (= 6.0.3.4)
37
+ activerecord (= 6.0.3.4)
38
+ activestorage (= 6.0.3.4)
39
+ activesupport (= 6.0.3.4)
40
+ nokogiri (>= 1.8.5)
41
+ actionview (6.0.3.4)
42
+ activesupport (= 6.0.3.4)
30
43
  builder (~> 3.1)
31
44
  erubi (~> 1.4)
32
45
  rails-dom-testing (~> 2.0)
33
- rails-html-sanitizer (~> 1.0, >= 1.0.3)
34
- activejob (5.2.2.1)
35
- activesupport (= 5.2.2.1)
46
+ rails-html-sanitizer (~> 1.1, >= 1.2.0)
47
+ activejob (6.0.3.4)
48
+ activesupport (= 6.0.3.4)
36
49
  globalid (>= 0.3.6)
37
- activemodel (5.2.2.1)
38
- activesupport (= 5.2.2.1)
39
- activerecord (5.2.2.1)
40
- activemodel (= 5.2.2.1)
41
- activesupport (= 5.2.2.1)
42
- arel (>= 9.0)
43
- activestorage (5.2.2.1)
44
- actionpack (= 5.2.2.1)
45
- activerecord (= 5.2.2.1)
50
+ activemodel (6.0.3.4)
51
+ activesupport (= 6.0.3.4)
52
+ activerecord (6.0.3.4)
53
+ activemodel (= 6.0.3.4)
54
+ activesupport (= 6.0.3.4)
55
+ activestorage (6.0.3.4)
56
+ actionpack (= 6.0.3.4)
57
+ activejob (= 6.0.3.4)
58
+ activerecord (= 6.0.3.4)
46
59
  marcel (~> 0.3.1)
47
- activesupport (5.2.2.1)
60
+ activesupport (6.0.3.4)
48
61
  concurrent-ruby (~> 1.0, >= 1.0.2)
49
62
  i18n (>= 0.7, < 2)
50
63
  minitest (~> 5.1)
51
64
  tzinfo (~> 1.1)
52
- arel (9.0.0)
53
- ast (2.4.0)
54
- bson (4.4.2)
55
- builder (3.2.3)
56
- byebug (11.0.1)
57
- codecov (0.1.14)
65
+ zeitwerk (~> 2.2, >= 2.2.2)
66
+ ast (2.4.1)
67
+ bson (4.11.0)
68
+ builder (3.2.4)
69
+ byebug (11.1.3)
70
+ codecov (0.2.12)
58
71
  json
59
72
  simplecov
60
- url
61
- coderay (1.1.2)
62
- concurrent-ruby (1.1.5)
63
- crass (1.0.5)
64
- diff-lcs (1.3)
73
+ coderay (1.1.3)
74
+ concurrent-ruby (1.1.7)
75
+ crass (1.0.6)
76
+ diff-lcs (1.4.4)
65
77
  docile (1.3.2)
66
- erubi (1.8.0)
78
+ erubi (1.9.0)
67
79
  globalid (0.4.2)
68
80
  activesupport (>= 4.2.0)
69
- graphql (1.9.17)
70
- i18n (1.6.0)
81
+ graphql (1.12.4)
82
+ i18n (1.8.5)
71
83
  concurrent-ruby (~> 1.0)
72
- jaro_winkler (1.5.4)
73
- json (2.3.0)
74
- loofah (2.3.1)
84
+ json (2.3.1)
85
+ loofah (2.7.0)
75
86
  crass (~> 1.0.2)
76
87
  nokogiri (>= 1.5.9)
77
88
  mail (2.7.1)
78
89
  mini_mime (>= 0.1.1)
79
90
  marcel (0.3.3)
80
91
  mimemagic (~> 0.3.2)
81
- method_source (0.9.2)
82
- mimemagic (0.3.3)
83
- mini_mime (1.0.1)
84
- mini_portile2 (2.4.0)
85
- minitest (5.11.3)
86
- mongo (2.8.0)
87
- bson (>= 4.4.2, < 5.0.0)
88
- mongoid (7.0.2)
89
- activemodel (>= 5.1, < 6.0.0)
90
- mongo (>= 2.5.1, < 3.0.0)
91
- nio4r (2.3.1)
92
- nokogiri (1.10.5)
93
- mini_portile2 (~> 2.4.0)
94
- parallel (1.19.1)
95
- parser (2.7.0.2)
96
- ast (~> 2.4.0)
97
- pry (0.12.2)
98
- coderay (~> 1.1.0)
99
- method_source (~> 0.9.0)
100
- pry-byebug (3.7.0)
92
+ method_source (1.0.0)
93
+ mimemagic (0.3.5)
94
+ mini_mime (1.0.2)
95
+ mini_portile2 (2.5.0)
96
+ minitest (5.14.2)
97
+ mongo (2.13.1)
98
+ bson (>= 4.8.2, < 5.0.0)
99
+ mongoid (7.1.4)
100
+ activemodel (>= 5.1, < 6.1)
101
+ mongo (>= 2.7.0, < 3.0.0)
102
+ nio4r (2.5.4)
103
+ nokogiri (1.11.1)
104
+ mini_portile2 (~> 2.5.0)
105
+ racc (~> 1.4)
106
+ parallel (1.19.2)
107
+ parser (2.7.2.0)
108
+ ast (~> 2.4.1)
109
+ pry (0.13.1)
110
+ coderay (~> 1.1)
111
+ method_source (~> 1.0)
112
+ pry-byebug (3.9.0)
101
113
  byebug (~> 11.0)
102
- pry (~> 0.10)
103
- rack (2.0.8)
114
+ pry (~> 0.13.0)
115
+ racc (1.5.2)
116
+ rack (2.2.3)
104
117
  rack-test (1.1.0)
105
118
  rack (>= 1.0, < 3)
106
- rails (5.2.2.1)
107
- actioncable (= 5.2.2.1)
108
- actionmailer (= 5.2.2.1)
109
- actionpack (= 5.2.2.1)
110
- actionview (= 5.2.2.1)
111
- activejob (= 5.2.2.1)
112
- activemodel (= 5.2.2.1)
113
- activerecord (= 5.2.2.1)
114
- activestorage (= 5.2.2.1)
115
- activesupport (= 5.2.2.1)
119
+ rails (6.0.3.4)
120
+ actioncable (= 6.0.3.4)
121
+ actionmailbox (= 6.0.3.4)
122
+ actionmailer (= 6.0.3.4)
123
+ actionpack (= 6.0.3.4)
124
+ actiontext (= 6.0.3.4)
125
+ actionview (= 6.0.3.4)
126
+ activejob (= 6.0.3.4)
127
+ activemodel (= 6.0.3.4)
128
+ activerecord (= 6.0.3.4)
129
+ activestorage (= 6.0.3.4)
130
+ activesupport (= 6.0.3.4)
116
131
  bundler (>= 1.3.0)
117
- railties (= 5.2.2.1)
132
+ railties (= 6.0.3.4)
118
133
  sprockets-rails (>= 2.0.0)
119
134
  rails-dom-testing (2.0.3)
120
135
  activesupport (>= 4.2.0)
121
136
  nokogiri (>= 1.6)
122
- rails-html-sanitizer (1.0.4)
123
- loofah (~> 2.2, >= 2.2.2)
124
- railties (5.2.2.1)
125
- actionpack (= 5.2.2.1)
126
- activesupport (= 5.2.2.1)
137
+ rails-html-sanitizer (1.3.0)
138
+ loofah (~> 2.3)
139
+ railties (6.0.3.4)
140
+ actionpack (= 6.0.3.4)
141
+ activesupport (= 6.0.3.4)
127
142
  method_source
128
143
  rake (>= 0.8.7)
129
- thor (>= 0.19.0, < 2.0)
144
+ thor (>= 0.20.3, < 2.0)
130
145
  rainbow (3.0.0)
131
- rake (10.5.0)
132
- rspec (3.8.0)
133
- rspec-core (~> 3.8.0)
134
- rspec-expectations (~> 3.8.0)
135
- rspec-mocks (~> 3.8.0)
136
- rspec-core (3.8.0)
137
- rspec-support (~> 3.8.0)
138
- rspec-expectations (3.8.2)
146
+ rake (13.0.1)
147
+ regexp_parser (1.8.2)
148
+ rexml (3.2.4)
149
+ rspec (3.10.0)
150
+ rspec-core (~> 3.10.0)
151
+ rspec-expectations (~> 3.10.0)
152
+ rspec-mocks (~> 3.10.0)
153
+ rspec-core (3.10.0)
154
+ rspec-support (~> 3.10.0)
155
+ rspec-expectations (3.10.0)
139
156
  diff-lcs (>= 1.2.0, < 2.0)
140
- rspec-support (~> 3.8.0)
141
- rspec-mocks (3.8.0)
157
+ rspec-support (~> 3.10.0)
158
+ rspec-mocks (3.10.0)
142
159
  diff-lcs (>= 1.2.0, < 2.0)
143
- rspec-support (~> 3.8.0)
144
- rspec-support (3.8.0)
145
- rubocop (0.79.0)
146
- jaro_winkler (~> 1.5.1)
160
+ rspec-support (~> 3.10.0)
161
+ rspec-support (3.10.0)
162
+ rubocop (0.91.0)
147
163
  parallel (~> 1.10)
148
- parser (>= 2.7.0.1)
164
+ parser (>= 2.7.1.1)
149
165
  rainbow (>= 2.2.2, < 4.0)
166
+ regexp_parser (>= 1.7)
167
+ rexml
168
+ rubocop-ast (>= 0.4.0, < 1.0)
150
169
  ruby-progressbar (~> 1.7)
151
- unicode-display_width (>= 1.4.0, < 1.7)
152
- rubocop-rspec (1.32.0)
153
- rubocop (>= 0.60.0)
170
+ unicode-display_width (>= 1.4.0, < 2.0)
171
+ rubocop-ast (0.8.0)
172
+ parser (>= 2.7.1.5)
173
+ rubocop-performance (1.8.1)
174
+ rubocop (>= 0.87.0)
175
+ rubocop-ast (>= 0.4.0)
176
+ rubocop-rspec (1.44.1)
177
+ rubocop (~> 0.87)
178
+ rubocop-ast (>= 0.7.1)
154
179
  ruby-progressbar (1.10.1)
155
- simplecov (0.18.1)
180
+ simplecov (0.19.1)
156
181
  docile (~> 1.1)
157
- simplecov-html (~> 0.11.0)
158
- simplecov-html (0.11.0)
159
- sprockets (3.7.2)
182
+ simplecov-html (~> 0.11)
183
+ simplecov-html (0.12.3)
184
+ sprockets (4.0.2)
160
185
  concurrent-ruby (~> 1.0)
161
186
  rack (> 1, < 3)
162
- sprockets-rails (3.2.1)
187
+ sprockets-rails (3.2.2)
163
188
  actionpack (>= 4.0)
164
189
  activesupport (>= 4.0)
165
190
  sprockets (>= 3.0.0)
166
- thor (0.20.3)
191
+ thor (1.0.1)
167
192
  thread_safe (0.3.6)
168
- tzinfo (1.2.5)
193
+ tzinfo (1.2.7)
169
194
  thread_safe (~> 0.1)
170
- unicode-display_width (1.6.1)
171
- url (0.3.2)
172
- websocket-driver (0.7.1)
195
+ unicode-display_width (1.7.0)
196
+ websocket-driver (0.7.3)
173
197
  websocket-extensions (>= 0.1.0)
174
- websocket-extensions (0.1.4)
198
+ websocket-extensions (0.1.5)
199
+ zeitwerk (2.4.1)
175
200
 
176
201
  PLATFORMS
177
202
  ruby
178
203
 
179
204
  DEPENDENCIES
180
205
  activerecord
181
- bundler (~> 1.16)
206
+ bundler (~> 2)
182
207
  codecov
183
208
  graphql_rails!
184
209
  mongoid
185
210
  pry-byebug
186
- rails (~> 5)
187
- rake (~> 10.0)
211
+ rails (~> 6)
212
+ rake (~> 13.0)
188
213
  rspec (~> 3.0)
189
- rubocop
190
- rubocop-rspec
214
+ rubocop (= 0.91.0)
215
+ rubocop-performance (~> 1.8, >= 1.8.1)
216
+ rubocop-rspec (~> 1.44, >= 1.44.1)
191
217
  simplecov
192
218
 
193
219
  BUNDLED WITH
194
- 1.16.4
220
+ 2.1.4
data/docs/README.md CHANGED
@@ -37,7 +37,7 @@ This will generate code which will let you start your graphql faster
37
37
  ```ruby
38
38
  # config/graphql/routes.rb
39
39
  GraphqlRails::Router.draw do
40
- # will create createUser, updateUser, deleteUser mutations and user, users queries.
40
+ # will create createUser, updateUser, destroyUser mutations and user, users queries.
41
41
  # expects that UsersController class exist
42
42
  resources :users
43
43
 
@@ -109,10 +109,10 @@ GraphqlRails::Router.draw do
109
109
 
110
110
  # you can use namespaced controllers too:
111
111
  scope module: 'admin' do
112
- # `updateTranslations` route will be handeled by `Admin::TranslationsController`
112
+ # `updateTranslations` route will be handled by `Admin::TranslationsController`
113
113
  mutation :updateTranslations, to: 'translations#update'
114
114
 
115
- # all :groups routes will be handeled by `Admin::GroupsController`
115
+ # all :groups routes will be handled by `Admin::GroupsController`
116
116
  resources :groups
117
117
  end
118
118
  end