graphiform 0.1.1 → 0.1.2
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/lib/graphiform/fields.rb +45 -13
- data/lib/graphiform/skeleton.rb +0 -4
- data/lib/graphiform/version.rb +1 -1
- data/lib/graphiform.rb +2 -2
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d348d5da31c862403a9127ada31cbb135e892c21928ca48b8ccfb5eb2d64d047
|
4
|
+
data.tar.gz: 73db372bee299b12a56e219218d04c4977436f3457379def8d0dd952a5e97aec
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b22a9b8d9e6b612406ab06a1d8fc86e8ad9e6305a8f1d222d7dc36a08f72cf95d911445ab5e2c1d852714f565b8d8758b6f3c2b3a1ebb1e62199a11f1a4880cb
|
7
|
+
data.tar.gz: c5766eb8d166b5311189ede79a26e21b5d55155199f24f995a763c9ddcc6540a5973bf360e1f5edb6ed75959085661f597e81946102a04b9022ad2ada48f5a61
|
data/lib/graphiform/fields.rb
CHANGED
@@ -26,6 +26,11 @@ module Graphiform
|
|
26
26
|
name,
|
27
27
|
type: nil,
|
28
28
|
required: false,
|
29
|
+
write_prepare: nil,
|
30
|
+
prepare: nil,
|
31
|
+
description: nil,
|
32
|
+
default_value: ::GraphQL::Schema::Argument::NO_DEFAULT,
|
33
|
+
as: nil,
|
29
34
|
**_options
|
30
35
|
)
|
31
36
|
name = name.to_sym
|
@@ -34,8 +39,17 @@ module Graphiform
|
|
34
39
|
|
35
40
|
return Helpers.logger.warn "Graphiform: Missing `type` for argument #{name}" if argument_type.nil?
|
36
41
|
|
42
|
+
prepare = write_prepare || prepare
|
43
|
+
|
37
44
|
graphql_input.class_eval do
|
38
|
-
argument
|
45
|
+
argument \
|
46
|
+
argument_name,
|
47
|
+
argument_type,
|
48
|
+
required: required,
|
49
|
+
prepare: prepare,
|
50
|
+
description: description,
|
51
|
+
default_value: default_value,
|
52
|
+
as: as
|
39
53
|
end
|
40
54
|
end
|
41
55
|
|
@@ -79,7 +93,7 @@ module Graphiform
|
|
79
93
|
end
|
80
94
|
|
81
95
|
def graphql_resolve_argument_type(name, type)
|
82
|
-
return type if type.present?
|
96
|
+
return Helpers.graphql_type(type) if type.present?
|
83
97
|
|
84
98
|
column_def = column(name)
|
85
99
|
|
@@ -160,9 +174,24 @@ module Graphiform
|
|
160
174
|
end
|
161
175
|
end
|
162
176
|
|
163
|
-
def graphql_add_field_to_type(
|
177
|
+
def graphql_add_field_to_type(
|
178
|
+
field_name,
|
179
|
+
type,
|
180
|
+
null = nil,
|
181
|
+
description: nil,
|
182
|
+
deprecation_reason: nil,
|
183
|
+
method: nil,
|
184
|
+
read_prepare: nil,
|
185
|
+
**_options
|
186
|
+
)
|
164
187
|
field_name = field_name.to_sym
|
165
|
-
field_options = {
|
188
|
+
field_options = {
|
189
|
+
description: description,
|
190
|
+
deprecation_reason: deprecation_reason,
|
191
|
+
method: method,
|
192
|
+
}
|
193
|
+
|
194
|
+
type = Helpers.graphql_type(type)
|
166
195
|
|
167
196
|
if Helpers.resolver?(type)
|
168
197
|
field_options[:resolver] = type
|
@@ -172,19 +201,21 @@ module Graphiform
|
|
172
201
|
end
|
173
202
|
|
174
203
|
graphql_type.class_eval do
|
175
|
-
field(field_name, **field_options)
|
204
|
+
added_field = field(field_name, **field_options)
|
205
|
+
|
206
|
+
define_method(added_field.method_sym, -> { read_prepare.call(object.public_send(added_field.method_sym)) }) if read_prepare
|
176
207
|
end
|
177
208
|
end
|
178
209
|
|
179
|
-
def graphql_add_column_field(field_name, column_def, type: nil, null: nil, **
|
210
|
+
def graphql_add_column_field(field_name, column_def, type: nil, null: nil, **options)
|
180
211
|
type = :string if type.blank? && enum_attribute?(field_name)
|
181
|
-
type
|
212
|
+
type ||= column_def.type
|
182
213
|
null = column_def.null if null.nil?
|
183
214
|
|
184
|
-
graphql_add_field_to_type(field_name, type, null)
|
215
|
+
graphql_add_field_to_type(field_name, type, null, **options)
|
185
216
|
end
|
186
217
|
|
187
|
-
def graphql_add_association_field(field_name, association_def, type: nil, null: nil, **
|
218
|
+
def graphql_add_association_field(field_name, association_def, type: nil, null: nil, **options)
|
188
219
|
unless association_def.klass.respond_to?(:graphql_type)
|
189
220
|
return Helpers.logger.warn(
|
190
221
|
"Graphiform: `#{name}` trying to add association `#{field_name}` - `#{association_def.klass.name}` does not include Graphiform"
|
@@ -204,20 +235,21 @@ module Graphiform
|
|
204
235
|
graphql_add_field_to_type(
|
205
236
|
"#{field_name}_connection",
|
206
237
|
klass.graphql_create_resolver(association_def.name, graphql_connection),
|
207
|
-
false
|
238
|
+
false,
|
239
|
+
**options
|
208
240
|
)
|
209
241
|
end
|
210
242
|
|
211
243
|
type = has_many ? klass.graphql_create_resolver(association_def.name, [klass.graphql_type]) : klass.graphql_type if type.nil?
|
212
244
|
null = association_def.macro != :has_many if null.nil?
|
213
245
|
|
214
|
-
graphql_add_field_to_type(field_name, type, null)
|
246
|
+
graphql_add_field_to_type(field_name, type, null, **options)
|
215
247
|
end
|
216
248
|
|
217
|
-
def graphql_add_method_field(field_name, type:, null: true, **
|
249
|
+
def graphql_add_method_field(field_name, type:, null: true, **options)
|
218
250
|
return Helpers.logger.warn "Graphiform: Missing `type` for field `#{field_name}` in model `#{name}`" if type.nil?
|
219
251
|
|
220
|
-
graphql_add_field_to_type(field_name, type, null)
|
252
|
+
graphql_add_field_to_type(field_name, type, null, **options)
|
221
253
|
end
|
222
254
|
end
|
223
255
|
end
|
data/lib/graphiform/skeleton.rb
CHANGED
@@ -3,8 +3,6 @@ require 'graphiform/helpers'
|
|
3
3
|
|
4
4
|
module Graphiform
|
5
5
|
def self.create_skeleton
|
6
|
-
return if defined? @skeleton_created
|
7
|
-
|
8
6
|
# Types
|
9
7
|
Helpers.get_const_or_create('Types') do
|
10
8
|
Module.new
|
@@ -89,7 +87,5 @@ module Graphiform
|
|
89
87
|
value 'DESC', 'Sort results in descending order'
|
90
88
|
end
|
91
89
|
end
|
92
|
-
|
93
|
-
@skeleton_created = true
|
94
90
|
end
|
95
91
|
end
|
data/lib/graphiform/version.rb
CHANGED
data/lib/graphiform.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: graphiform
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- jayce.pulsipher
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-03-
|
11
|
+
date: 2020-03-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: spy
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: sqlite3
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|