graphql_rails 1.0.0 → 1.2.3

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.
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