graphiti 1.3.1 → 1.3.5

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: 6a4d4d39d07565c8576f7294c334b391b69a6c4c20710b7901b189eab967b60b
4
- data.tar.gz: 2f63bf884fb57ff25e748f656651c61b9c93e8175719f5e0757a49f5fbd55752
3
+ metadata.gz: 4add496faa756dcfd1d5980628d722b0d41bc9acfdf27d04cb55db15d7e3bba7
4
+ data.tar.gz: a991debe7ba1204c30388b4b3174e7fdfaf7446e7d777f3030d18296975a096e
5
5
  SHA512:
6
- metadata.gz: 87becc989b7082cbbf6464396f68249effddf376a2a1380cea9e1575e30213d15b4b370e9bea33a0ad42ddbd9fcdae038a1032940a4d0a66ac4783450c43c865
7
- data.tar.gz: ed7c25d26c72f1abbe709ca49959ce9f6e6277b190cabcb8028faf65b736da5a94955818a5e0a2f28e572fee4d8ac5b6df17c19f2694d482b1cff7d6f035fa7c
6
+ metadata.gz: d6e1253418d35ce742bc1365e1f18268548ac62f180d6c606420df18f75261d3a562495e2b0213788993bdb34102b5450664e6f5124cdf713cdb3ad40af71b1f
7
+ data.tar.gz: dd65210486a8b212571184d71c28feaaeb3540e85a3964ed54248a193034ebece099bba186672488642093a727d47d021210ee56f26d6e37739cc72f6d52a414
@@ -9,7 +9,11 @@ module Graphiti
9
9
  opts = args.extract_options!
10
10
  type_override = args[0]
11
11
 
12
- if (att = get_attr(name, :filterable, raise_error: :only_unsupported))
12
+ if (att = (attributes[name] || extra_attributes[name]))
13
+ # We're opting in to filtering, so force this
14
+ # UNLESS the filter is guarded at the attribute level
15
+ att[:filterable] = true if att[:filterable] == false
16
+
13
17
  aliases = [name, opts[:aliases]].flatten.compact
14
18
  operators = FilterOperators.build(self, att[:type], opts, &blk)
15
19
 
@@ -23,6 +27,8 @@ module Graphiti
23
27
  end
24
28
 
25
29
  required = att[:filterable] == :required || !!opts[:required]
30
+ schema = !!opts[:via_attribute_dsl] ? att[:schema] : opts[:schema] != false
31
+
26
32
  config[:filters][name.to_sym] = {
27
33
  aliases: aliases,
28
34
  name: name.to_sym,
@@ -32,6 +38,7 @@ module Graphiti
32
38
  single: !!opts[:single],
33
39
  dependencies: opts[:dependent],
34
40
  required: required,
41
+ schema: schema,
35
42
  operators: operators.to_hash,
36
43
  allow_nil: opts.fetch(:allow_nil, filters_accept_nil_by_default),
37
44
  deny_empty: opts.fetch(:deny_empty, filters_deny_empty_by_default)
@@ -130,7 +137,7 @@ module Graphiti
130
137
  options[:sortable] ? sort(name) : config[:sorts].delete(name)
131
138
 
132
139
  if options[:filterable]
133
- filter(name, allow: options[:allow])
140
+ filter(name, allow: options[:allow], via_attribute_dsl: true)
134
141
  else
135
142
  config[:filters].delete(name)
136
143
  end
@@ -144,7 +151,8 @@ module Graphiti
144
151
  readable: true,
145
152
  writable: false,
146
153
  sortable: false,
147
- filterable: false
154
+ filterable: false,
155
+ schema: true
148
156
  }
149
157
  options = defaults.merge(options)
150
158
  attribute_option(options, :readable)
@@ -153,6 +153,8 @@ module Graphiti
153
153
  def extra_attributes(resource)
154
154
  {}.tap do |attrs|
155
155
  resource.extra_attributes.each_pair do |name, config|
156
+ next unless config[:schema]
157
+
156
158
  attrs[name] = {
157
159
  type: config[:type].to_s,
158
160
  readable: flag(config[:readable]),
@@ -181,11 +183,11 @@ module Graphiti
181
183
  def sorts(resource)
182
184
  {}.tap do |s|
183
185
  resource.sorts.each_pair do |name, sort|
184
- next unless resource.attributes[name][:schema]
186
+ attr = resource.all_attributes[name]
187
+ next unless attr[:schema]
185
188
 
186
189
  config = {}
187
190
  config[:only] = sort[:only] if sort[:only]
188
- attr = resource.attributes[name]
189
191
  if attr[:sortable].is_a?(Symbol)
190
192
  config[:guard] = true
191
193
  end
@@ -197,7 +199,7 @@ module Graphiti
197
199
  def filters(resource)
198
200
  {}.tap do |f|
199
201
  resource.filters.each_pair do |name, filter|
200
- next unless resource.attributes[name][:schema]
202
+ next unless resource.filters[name][:schema]
201
203
 
202
204
  config = {
203
205
  type: filter[:type].to_s,
@@ -209,7 +211,7 @@ module Graphiti
209
211
  config[:deny] = filter[:deny].map(&:to_s) if filter[:deny]
210
212
  config[:dependencies] = filter[:dependencies].map(&:to_s) if filter[:dependencies]
211
213
 
212
- attr = resource.attributes[name]
214
+ attr = resource.all_attributes[name]
213
215
  if attr[:filterable].is_a?(Symbol)
214
216
  if attr[:filterable] == :required
215
217
  config[:required] = true
@@ -25,8 +25,9 @@ module Graphiti
25
25
 
26
26
  # See #requested_relationships
27
27
  def self.relationship(name, options = {}, &block)
28
+ prev = Util::Hash.deep_dup(field_condition_blocks)
28
29
  super
29
- field_condition_blocks.delete(name)
30
+ self.field_condition_blocks = prev
30
31
  _register_condition(relationship_condition_blocks, name, options)
31
32
  end
32
33
 
@@ -1,3 +1,3 @@
1
1
  module Graphiti
2
- VERSION = "1.3.1"
2
+ VERSION = "1.3.5"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: graphiti
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 1.3.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lee Richmond
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-08-17 00:00:00.000000000 Z
11
+ date: 2021-09-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jsonapi-serializable