graphql_rails 0.4.2 → 0.4.3

Sign up to get free protection for your applications and to get access to all the features.
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