activecube-graphql 0.1.8 → 0.1.13

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: 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