graphql_rails 0.5.0 → 0.5.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/CHANGELOG.md +2 -1
- data/Gemfile.lock +3 -3
- data/docs/components/controller.md +15 -0
- data/graphql_rails.gemspec +1 -1
- data/lib/graphql_rails/attribute/attributable.rb +5 -1
- data/lib/graphql_rails/attribute/attribute_name_parser.rb +24 -11
- data/lib/graphql_rails/controller/action_configuration.rb +8 -2
- data/lib/graphql_rails/controller/action_hooks_runner.rb +3 -3
- data/lib/graphql_rails/model/input_attribute.rb +3 -2
- data/lib/graphql_rails/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f63b8e5d3c98d472ff1ec382261d772e83d70d7d8af6df29da806b72f8563858
|
4
|
+
data.tar.gz: d075ad40f236b39d0f57e7a47469c6de5a7a3b5ebba5ab62fff30981b7e536ce
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5edf95451b857f27d304701402e8a18c771150385cf1fbc7a72db0d446ee7848c4de6ff0c85466fc6129e9adde4e14057c9b11b244cc388d2f6ee692547511e2
|
7
|
+
data.tar.gz: dfd50167b6c86ee5f371e0183eac93bb8b32d6a3572c85b2cdc1b218c3ca026afc501a44d4534728b45dd0594c4fb9ad451d8d240e1ad9a8fbf12246b2200091
|
data/CHANGELOG.md
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
graphql_rails (0.5.
|
4
|
+
graphql_rails (0.5.1)
|
5
5
|
activesupport (>= 4)
|
6
6
|
graphql (~> 1)
|
7
7
|
|
@@ -31,7 +31,7 @@ GEM
|
|
31
31
|
concurrent-ruby (1.1.5)
|
32
32
|
diff-lcs (1.3)
|
33
33
|
docile (1.3.1)
|
34
|
-
graphql (1.9.
|
34
|
+
graphql (1.9.4)
|
35
35
|
i18n (1.6.0)
|
36
36
|
concurrent-ruby (~> 1.0)
|
37
37
|
jaro_winkler (1.5.2)
|
@@ -107,4 +107,4 @@ DEPENDENCIES
|
|
107
107
|
simplecov
|
108
108
|
|
109
109
|
BUNDLED WITH
|
110
|
-
1.16.
|
110
|
+
1.16.4
|
@@ -138,6 +138,21 @@ class UsersController < GraphqlRails::Controller
|
|
138
138
|
end
|
139
139
|
```
|
140
140
|
|
141
|
+
### *options*
|
142
|
+
|
143
|
+
You can customize your queries using `options` method. So far we've added `input_format` and allowed value is `:original` which specifies to keep the field name format.
|
144
|
+
`options` method can be used like so:
|
145
|
+
|
146
|
+
```ruby
|
147
|
+
class UsersController < GraphqlRails::Controller
|
148
|
+
action(:create).options(input_format: :original).permit(:full_name)
|
149
|
+
|
150
|
+
def create
|
151
|
+
User.create(params)
|
152
|
+
end
|
153
|
+
end
|
154
|
+
```
|
155
|
+
|
141
156
|
## *before_action*
|
142
157
|
|
143
158
|
You can add `before_action` to run some filters before calling your controller action. Here is an example:
|
data/graphql_rails.gemspec
CHANGED
@@ -10,7 +10,7 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.email = ['po.jurcys@gmail.com']
|
11
11
|
|
12
12
|
spec.summary = %q{GraphQL server and client for rails}
|
13
|
-
spec.homepage = 'https://github.com/
|
13
|
+
spec.homepage = 'https://github.com/samesystem/graphql_rails'
|
14
14
|
spec.license = 'MIT'
|
15
15
|
|
16
16
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
@@ -39,6 +39,10 @@ module GraphqlRails
|
|
39
39
|
|
40
40
|
protected
|
41
41
|
|
42
|
+
def options
|
43
|
+
{}
|
44
|
+
end
|
45
|
+
|
42
46
|
def nullable_type
|
43
47
|
type = type_parser.graphql_type
|
44
48
|
type.non_null? ? type.of_type : type
|
@@ -51,7 +55,7 @@ module GraphqlRails
|
|
51
55
|
end
|
52
56
|
|
53
57
|
def attribute_name_parser
|
54
|
-
@attribute_name_parser ||= AttributeNameParser.new(initial_name)
|
58
|
+
@attribute_name_parser ||= AttributeNameParser.new(initial_name, options: options)
|
55
59
|
end
|
56
60
|
end
|
57
61
|
end
|
@@ -7,23 +7,20 @@ module GraphqlRails
|
|
7
7
|
class AttributeNameParser
|
8
8
|
attr_reader :name
|
9
9
|
|
10
|
-
def initialize(original_name)
|
10
|
+
def initialize(original_name, options: {})
|
11
11
|
name = original_name.to_s
|
12
12
|
@required = !name['!'].nil?
|
13
13
|
@name = name.tr('!', '')
|
14
|
+
@options = options
|
14
15
|
end
|
15
16
|
|
16
17
|
def field_name
|
17
|
-
@field_name ||=
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
end
|
24
|
-
|
25
|
-
field.camelize(:lower)
|
26
|
-
end
|
18
|
+
@field_name ||= \
|
19
|
+
if original_format?
|
20
|
+
preprocesed_name
|
21
|
+
else
|
22
|
+
preprocesed_name.camelize(:lower)
|
23
|
+
end
|
27
24
|
end
|
28
25
|
|
29
26
|
def graphql_type
|
@@ -41,6 +38,22 @@ module GraphqlRails
|
|
41
38
|
def required?
|
42
39
|
@required
|
43
40
|
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
attr_reader :options
|
45
|
+
|
46
|
+
def original_format?
|
47
|
+
options[:input_format] == :original
|
48
|
+
end
|
49
|
+
|
50
|
+
def preprocesed_name
|
51
|
+
if name.end_with?('?')
|
52
|
+
"is_#{name.remove(/\?\Z/)}"
|
53
|
+
else
|
54
|
+
name
|
55
|
+
end
|
56
|
+
end
|
44
57
|
end
|
45
58
|
end
|
46
59
|
end
|
@@ -18,9 +18,15 @@ module GraphqlRails
|
|
18
18
|
|
19
19
|
def initialize
|
20
20
|
@attributes = {}
|
21
|
+
@action_options = {}
|
21
22
|
@can_return_nil = false
|
22
23
|
end
|
23
24
|
|
25
|
+
def options(input_format:)
|
26
|
+
@action_options[:input_format] = input_format
|
27
|
+
self
|
28
|
+
end
|
29
|
+
|
24
30
|
def permit(*no_type_attributes, **typed_attributes)
|
25
31
|
no_type_attributes.each { |attribute| permit_attribute(attribute) }
|
26
32
|
typed_attributes.each { |attribute, type| permit_attribute(attribute, type) }
|
@@ -67,7 +73,7 @@ module GraphqlRails
|
|
67
73
|
|
68
74
|
private
|
69
75
|
|
70
|
-
attr_reader :custom_return_type
|
76
|
+
attr_reader :custom_return_type, :action_options
|
71
77
|
|
72
78
|
def build_return_type
|
73
79
|
return nil if custom_return_type.nil?
|
@@ -85,7 +91,7 @@ module GraphqlRails
|
|
85
91
|
|
86
92
|
def permit_attribute(name, type = nil)
|
87
93
|
field_name = name.to_s.remove(/!\Z/)
|
88
|
-
attributes[field_name] = Model::InputAttribute.new(name.to_s, type)
|
94
|
+
attributes[field_name] = Model::InputAttribute.new(name.to_s, type, options: action_options)
|
89
95
|
end
|
90
96
|
end
|
91
97
|
end
|
@@ -9,10 +9,10 @@ module GraphqlRails
|
|
9
9
|
@controller = controller
|
10
10
|
end
|
11
11
|
|
12
|
-
def call
|
12
|
+
def call(&block)
|
13
13
|
result = nil
|
14
14
|
run_action_hooks(:before)
|
15
|
-
run_around_action_hooks { result =
|
15
|
+
run_around_action_hooks { result = controller.instance_exec(&block) }
|
16
16
|
run_action_hooks(:after)
|
17
17
|
result
|
18
18
|
end
|
@@ -42,7 +42,7 @@ module GraphqlRails
|
|
42
42
|
|
43
43
|
def execute_hook(action_hook, &block)
|
44
44
|
if action_hook.anonymous?
|
45
|
-
|
45
|
+
controller.instance_exec(controller, *block, &action_hook.action_proc)
|
46
46
|
else
|
47
47
|
controller.send(action_hook.name, &block)
|
48
48
|
end
|
@@ -8,10 +8,11 @@ module GraphqlRails
|
|
8
8
|
|
9
9
|
attr_reader :description
|
10
10
|
|
11
|
-
def initialize(name, type = nil, description: nil)
|
11
|
+
def initialize(name, type = nil, description: nil, options: {})
|
12
12
|
@initial_name = name
|
13
13
|
@initial_type = type
|
14
14
|
@description = description
|
15
|
+
@options = options
|
15
16
|
end
|
16
17
|
|
17
18
|
def function_argument_args
|
@@ -29,7 +30,7 @@ module GraphqlRails
|
|
29
30
|
|
30
31
|
private
|
31
32
|
|
32
|
-
attr_reader :initial_name, :initial_type
|
33
|
+
attr_reader :initial_name, :initial_type, :options
|
33
34
|
|
34
35
|
def raw_input_type
|
35
36
|
return initial_type if initial_type.is_a?(GraphQL::InputObjectType)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: graphql_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Povilas Jurčys
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-04-
|
11
|
+
date: 2019-04-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: graphql
|
@@ -159,7 +159,7 @@ files:
|
|
159
159
|
- lib/graphql_rails/router/schema_builder.rb
|
160
160
|
- lib/graphql_rails/rspec_controller_helpers.rb
|
161
161
|
- lib/graphql_rails/version.rb
|
162
|
-
homepage: https://github.com/
|
162
|
+
homepage: https://github.com/samesystem/graphql_rails
|
163
163
|
licenses:
|
164
164
|
- MIT
|
165
165
|
metadata: {}
|
@@ -179,7 +179,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
179
179
|
version: '0'
|
180
180
|
requirements: []
|
181
181
|
rubyforge_project:
|
182
|
-
rubygems_version: 2.7.
|
182
|
+
rubygems_version: 2.7.6
|
183
183
|
signing_key:
|
184
184
|
specification_version: 4
|
185
185
|
summary: GraphQL server and client for rails
|