activecube-graphql 0.1.8 → 0.1.13

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: 42579bf672a307cc6a4c48285c98d07ada9aae3547300f00880d6444d6ae55d0
4
- data.tar.gz: f7d5dc893fd074bc2f37b065b46e0113a3f0107a7dfe850f50e5b5967af70db0
3
+ metadata.gz: 69d003fbb6f3968b2e25390e2b4177fd46ec075415f47644f7a0947237800275
4
+ data.tar.gz: a46404f52537cb50f19f2ccc99af7a0f866742e0ef27297b1606ea3cface3fee
5
5
  SHA512:
6
- metadata.gz: 5ec2fea9a92f5ae829e118965daf2e60a51041e7cb2eedb0a1e2634cc8ea6b37656c34399891d37cfc456ff938831ea5ad92ab3e7c650bd05e41eefd6f66064d
7
- data.tar.gz: f86cd4c3bb22b28b6ec6298e1d5b0fbbb6c33712956aa8a8124784e74016ea84e65b36094375afeb842f935643dabe3db5260cf279005f4d34c311db219582ce
6
+ metadata.gz: b9021ccee3198ebd7bc25aed42bee1b13689da056a5100e56a42d99ee7dc7dac1d5f8213c412ff972a1149ee39c0b5f88b928c30922919d77113b7fe022de774
7
+ data.tar.gz: 67b421e11ae30b5127da95da2f964683fb389b7d527cc2429272f30139e90a9256854442534d0846eb58408c38517160558a66e31ad15de630ef753e97489869
@@ -1,50 +1,50 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- activecube-graphql (0.1.8)
5
- activecube (~> 0.1.14)
4
+ activecube-graphql (0.1.12)
5
+ activecube (~> 0.1.15)
6
6
  graphql (~> 1.10)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- activecube (0.1.14)
11
+ activecube (0.1.26)
12
12
  activerecord (>= 5.2)
13
- activemodel (6.0.2.2)
14
- activesupport (= 6.0.2.2)
15
- activerecord (6.0.2.2)
16
- activemodel (= 6.0.2.2)
17
- activesupport (= 6.0.2.2)
18
- activesupport (6.0.2.2)
13
+ activemodel (6.0.3.1)
14
+ activesupport (= 6.0.3.1)
15
+ activerecord (6.0.3.1)
16
+ activemodel (= 6.0.3.1)
17
+ activesupport (= 6.0.3.1)
18
+ activesupport (6.0.3.1)
19
19
  concurrent-ruby (~> 1.0, >= 1.0.2)
20
20
  i18n (>= 0.7, < 2)
21
21
  minitest (~> 5.1)
22
22
  tzinfo (~> 1.1)
23
- zeitwerk (~> 2.2)
23
+ zeitwerk (~> 2.2, >= 2.2.2)
24
24
  concurrent-ruby (1.1.6)
25
25
  diff-lcs (1.3)
26
- graphql (1.10.6)
27
- i18n (1.8.2)
26
+ graphql (1.11.0)
27
+ i18n (1.8.3)
28
28
  concurrent-ruby (~> 1.0)
29
- minitest (5.14.0)
29
+ minitest (5.14.1)
30
30
  rake (13.0.1)
31
31
  rspec (3.9.0)
32
32
  rspec-core (~> 3.9.0)
33
33
  rspec-expectations (~> 3.9.0)
34
34
  rspec-mocks (~> 3.9.0)
35
- rspec-core (3.9.1)
36
- rspec-support (~> 3.9.1)
37
- rspec-expectations (3.9.0)
35
+ rspec-core (3.9.2)
36
+ rspec-support (~> 3.9.3)
37
+ rspec-expectations (3.9.2)
38
38
  diff-lcs (>= 1.2.0, < 2.0)
39
39
  rspec-support (~> 3.9.0)
40
40
  rspec-mocks (3.9.1)
41
41
  diff-lcs (>= 1.2.0, < 2.0)
42
42
  rspec-support (~> 3.9.0)
43
- rspec-support (3.9.2)
43
+ rspec-support (3.9.3)
44
44
  thread_safe (0.3.6)
45
45
  tzinfo (1.2.7)
46
46
  thread_safe (~> 0.1)
47
- zeitwerk (2.3.0)
47
+ zeitwerk (2.3.1)
48
48
 
49
49
  PLATFORMS
50
50
  ruby
@@ -24,7 +24,7 @@ to query cubes}
24
24
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
25
25
  spec.require_paths = ["lib"]
26
26
 
27
- spec.add_runtime_dependency 'activecube', '~> 0.1.14'
27
+ spec.add_runtime_dependency 'activecube', '~> 0.1.15'
28
28
  spec.add_runtime_dependency 'graphql', '~> 1.10'
29
29
 
30
30
  spec.add_development_dependency "bundler", "~> 1.17"
@@ -74,10 +74,15 @@ module Activecube
74
74
  query
75
75
  end
76
76
 
77
+ private
78
+
77
79
  def apply_args element, args = self.arguments
78
80
  args && args.each_pair do |key, value|
79
81
  k = key.to_sym
80
- if element.respond_to?(:selectors) && (selector = cube.selectors[k])
82
+ has_selectors = element.respond_to?(:selectors)
83
+ if has_selectors && k==:any
84
+ element = apply_or_selector element, value
85
+ elsif has_selectors && (selector = cube.selectors[k])
81
86
  if value.kind_of? Hash
82
87
  element = apply_selector element, k, value
83
88
  elsif value.kind_of? Array
@@ -112,7 +117,28 @@ module Activecube
112
117
  element
113
118
  end
114
119
 
115
- private
120
+ def apply_or_selector element, value
121
+ selectors = value.collect{|v| make_selector v }.compact
122
+ element.when( Activecube::Query::Selector.or(selectors) )
123
+ end
124
+
125
+ def make_selector hash
126
+ raise Activecube::InputArgumentError, "Hash expected for selector, #{v} found instead" unless hash.kind_of?(Hash)
127
+ selectors = hash.to_a.collect{|attr, expressions|
128
+ k = attr.to_s.camelize(:lower).to_sym
129
+ (expressions.kind_of?(Array) ? expressions : [expressions]).collect{|expression|
130
+ expression.to_a.collect{|c|
131
+ operator, arg = c
132
+ selector = cube.selectors[k]
133
+ raise Activecube::InputArgumentError, "Selector not found for '#{k}'" unless selector
134
+ raise Activecube::InputArgumentError, "#{selector} does not handle method '#{operator}' '#{k}'" unless selector.respond_to?(operator)
135
+ selector.send(operator, arg) unless arg.nil?
136
+ selector
137
+ }
138
+ }
139
+ }.flatten
140
+ Activecube::Query::Selector.and(selectors)
141
+ end
116
142
 
117
143
  def apply_to_array(element, k, selector, value)
118
144
 
@@ -97,7 +97,8 @@ module Activecube::Graphql
97
97
 
98
98
  def simple_value response_class, definition, element
99
99
  index = @key_map[element.key]
100
- node_type = element.context_node.definition.type.name
100
+ node_type = element.context_node.definition.type.try(:of_type).try(:name) ||
101
+ element.context_node.definition.type.try(:name)
101
102
  response_class.class_eval do
102
103
  define_method definition.underscore do |**rest_of_options|
103
104
  convert_type node_type, @row[index]
@@ -1,5 +1,5 @@
1
1
  module Activecube
2
2
  module Graphql
3
- VERSION = "0.1.8"
3
+ VERSION = "0.1.13"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: activecube-graphql
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.8
4
+ version: 0.1.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aleksey Studnev
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-04-15 00:00:00.000000000 Z
11
+ date: 2020-08-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activecube
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 0.1.14
19
+ version: 0.1.15
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 0.1.14
26
+ version: 0.1.15
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: graphql
29
29
  requirement: !ruby/object:Gem::Requirement