graphql_rails 0.4.2 → 0.4.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 349d2e706f6e37ea205a07dff6da8ef90b0cfa7cb4de5e1307085a445ccb45d3
4
- data.tar.gz: ae79e6ea80653f21b61ba563bbc9e2cbba97fd317f2cf9e3c09c87b0a223ce60
3
+ metadata.gz: f3c30cddc8d921388e200982dc22033da8a3decd449fa44a228d320a52bfd18a
4
+ data.tar.gz: a783527f323172eac78cf725beea3b931b94f9ad2b8477e59d8cf395c8122c43
5
5
  SHA512:
6
- metadata.gz: e92b5d83d83fe272da215aaa00d0e228e2bd7d293dcdcf3d9d6a004c10bfd0fdf1b9cfa481e47a07af2091983da98fcafef501e4b328c4c8caafd6a9f91f65f3
7
- data.tar.gz: 308a6b503baad6c87dbcac947e1115a63cdbbe379be19bd2ecb5d108239409ace03c9a20a5acdbe1736f3f58cf30fe5935b57a34c5c4a7f4a56ea76d156ce5b9
6
+ metadata.gz: f76e5e25f3c1e58c557b8dbeb77d0dba51815c9dd442c6adcd30e82481fb4b999831c2bf8b4beaae05c79e18226d04db6069b35e68bb845a201e171aa9000fb2
7
+ data.tar.gz: 7ca367ea5bbaf9341f0326f77eef2c515b29f233d8fb3000586cf3f16ecba1cd96f4e93dbe5106750fcd4ca2a99b7e7ca58e3b4aabde7eeab56bd0c94d58be31
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- graphql_rails (0.4.2)
4
+ graphql_rails (0.4.3)
5
5
  activesupport (>= 4)
6
6
  graphql (~> 1)
7
7
 
@@ -20,9 +20,25 @@ end
20
20
 
21
21
  ### *permit*
22
22
 
23
+ to define attributes which are accepted by each controller action, you need to call `permit` method, like this:
24
+
23
25
  ```ruby
24
26
  class UsersController < GraphqlRails::Controller
25
- action(:create).describe('Creates user')
27
+ action(:create).permit(:id!, :some_string_value)
28
+
29
+ def create
30
+ User.create(params)
31
+ end
32
+ end
33
+ ```
34
+
35
+ permitted values will be available via `params` method in controller action. By default all attributes will have `String` type. Also you can add exclamation mark after attribute name if you want to forbid `nil` value for that attribute.
36
+
37
+ If you want to use custom input type, you can define it like this:
38
+
39
+ ```ruby
40
+ class UsersController < GraphqlRails::Controller
41
+ action(:create).permit(:id!, some_integer_value: :int!, something_custom: YourGraphqlInputType)
26
42
 
27
43
  def create
28
44
  User.create(params)
@@ -48,7 +48,7 @@ module GraphqlRails
48
48
  end
49
49
 
50
50
  def parse_type(type)
51
- type = TypeParser.new(type).call
51
+ type = TypeParser.new(type).graphql_type
52
52
 
53
53
  original_name['!'] ? type.to_non_null_type : type
54
54
  end
@@ -8,7 +8,7 @@ module GraphqlRails
8
8
  class Controller
9
9
  # stores all graphql_rails contoller specific config
10
10
  class ActionConfiguration
11
- attr_reader :attributes, :return_type, :pagination_options
11
+ attr_reader :attributes, :pagination_options
12
12
 
13
13
  def initialize_copy(other)
14
14
  super
@@ -27,6 +27,7 @@ module GraphqlRails
27
27
  end
28
28
 
29
29
  def paginated(pagination_options = {})
30
+ @return_type = nil
30
31
  @pagination_options = pagination_options
31
32
  permit(:before, :after, first: :int, last: :int)
32
33
  end
@@ -45,8 +46,9 @@ module GraphqlRails
45
46
  self
46
47
  end
47
48
 
48
- def returns(new_return_type)
49
- @return_type = TypeParser.new(new_return_type).call
49
+ def returns(custom_return_type)
50
+ @return_type = nil
51
+ @custom_return_type = custom_return_type
50
52
  self
51
53
  end
52
54
 
@@ -58,8 +60,28 @@ module GraphqlRails
58
60
  !!pagination_options # rubocop:disable Style/DoubleNegation
59
61
  end
60
62
 
63
+ def return_type
64
+ @return_type ||= build_return_type
65
+ end
66
+
61
67
  private
62
68
 
69
+ attr_reader :custom_return_type
70
+
71
+ def build_return_type
72
+ return nil if custom_return_type.nil?
73
+
74
+ if paginated?
75
+ type_parser.graphql_model ? type_parser.graphql_model.graphql.connection_type : nil
76
+ else
77
+ type_parser.graphql_type
78
+ end
79
+ end
80
+
81
+ def type_parser
82
+ TypeParser.new(custom_return_type)
83
+ end
84
+
63
85
  def permit_attribute(name, type = nil)
64
86
  field_name = name.to_s.remove(/!\Z/)
65
87
  attributes[field_name] = Attribute.new(name.to_s, type)
@@ -31,7 +31,7 @@ module GraphqlRails
31
31
  @unparsed_type = unparsed_type
32
32
  end
33
33
 
34
- def call
34
+ def graphql_type
35
35
  return unparsed_type if raw_graphql_type?
36
36
 
37
37
  if list?
@@ -41,6 +41,12 @@ module GraphqlRails
41
41
  end
42
42
  end
43
43
 
44
+ def graphql_model
45
+ type_class = inner_type_name.safe_constantize
46
+ return unless type_class.respond_to?(:graphql)
47
+ type_class
48
+ end
49
+
44
50
  private
45
51
 
46
52
  attr_reader :unparsed_type
@@ -96,8 +102,8 @@ module GraphqlRails
96
102
  end
97
103
 
98
104
  def dynamicly_defined_type
99
- type_class = inner_type_name.safe_constantize
100
- return unless type_class.respond_to?(:graphql)
105
+ type_class = graphql_model
106
+ return unless type_class
101
107
 
102
108
  type_class.graphql.graphql_type
103
109
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GraphqlRails
4
- VERSION = '0.4.2'
4
+ VERSION = '0.4.3'
5
5
  end
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.4.2
4
+ version: 0.4.3
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-03-15 00:00:00.000000000 Z
11
+ date: 2019-03-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: graphql