activecube-graphql 0.1.8 → 0.1.9

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: 40ff0b342c70ef9d40d3b0d5a10962abb56a4e522f0d0e049cf2f081541ba1a8
4
+ data.tar.gz: 85f3d371fcac7ca148cadda4c3441d95d6608cac8339dc36b6398dab967d289f
5
5
  SHA512:
6
- metadata.gz: 5ec2fea9a92f5ae829e118965daf2e60a51041e7cb2eedb0a1e2634cc8ea6b37656c34399891d37cfc456ff938831ea5ad92ab3e7c650bd05e41eefd6f66064d
7
- data.tar.gz: f86cd4c3bb22b28b6ec6298e1d5b0fbbb6c33712956aa8a8124784e74016ea84e65b36094375afeb842f935643dabe3db5260cf279005f4d34c311db219582ce
6
+ metadata.gz: d3bc3d55060c29221aef2279c3d2dad86febef7ba831acdf5f89ae9b541059e9d544214ced2d439bcd8ab1bc08142f3e43caad59633371da5ed1a85c95d379f5
7
+ data.tar.gz: daecbfad367c123665d3f3355d8214fd66e2f9774b1f09e4555f510e2932fca926548826f09e494d5f63aaf39f9bc2aa7ce04504c712c6e0fc67dd92cce9b4c8
@@ -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.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
 
@@ -1,5 +1,5 @@
1
1
  module Activecube
2
2
  module Graphql
3
- VERSION = "0.1.8"
3
+ VERSION = "0.1.9"
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.9
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-04-16 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