activecube-graphql 0.1.11 → 0.1.16

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: 8eb63554a3e90082f91904ad35afbe20c7bebc24bd926806d03fec739aec1adb
4
- data.tar.gz: c13255fd323b39d072e2e11588ea2622b11b154449f5c9ff09c6522bfccb83aa
3
+ metadata.gz: f44937cd21cc7bbe8d77a097c5d355691574a2c0510b6ed3f2c0f602056166eb
4
+ data.tar.gz: 8244907400ae4e304d73a494d40576f1c1fc187f173f6fb2bd96ff1bf315b62d
5
5
  SHA512:
6
- metadata.gz: ade7aa2115c6a7c77a75c0533acfa22beb0da606c8864e788c78ec822842b856a40b22778088297486369cd2c450d8c26588595bc40a213da51154e2d5a2ec30
7
- data.tar.gz: dcaa69ace4692de68f56e34ca78b66da9fedb9a530b3595f444da3b75e0fc4a33d00c43a63075d103dc72d328518700d39af52919e6f421485aa1bc7470d7697
6
+ metadata.gz: 9096d95623776426039afa5b9d05dccf1873afa1beac11d83c4050ad12e8a12ae3e8b352f452735f4b45562ec9c7ec1c80fa486e8b83e2357bbded5d63fa74ae
7
+ data.tar.gz: 3bc0b34cdc95c96cbcf910520b7f8718da54dba79cb08cf60798cce57feeb1b6688529efead6030f08c05dcd03f10eaeabd9bcc48b5b3c8e329c32981e8e2cbb
@@ -1,14 +1,14 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- activecube-graphql (0.1.10)
5
- activecube (~> 0.1.15)
4
+ activecube-graphql (0.1.15)
5
+ activecube (~> 0.1.28)
6
6
  graphql (~> 1.10)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- activecube (0.1.19)
11
+ activecube (0.1.28)
12
12
  activerecord (>= 5.2)
13
13
  activemodel (6.0.3.1)
14
14
  activesupport (= 6.0.3.1)
@@ -21,12 +21,12 @@ GEM
21
21
  minitest (~> 5.1)
22
22
  tzinfo (~> 1.1)
23
23
  zeitwerk (~> 2.2, >= 2.2.2)
24
- concurrent-ruby (1.1.6)
24
+ concurrent-ruby (1.1.7)
25
25
  diff-lcs (1.3)
26
- graphql (1.10.10)
27
- i18n (1.8.2)
26
+ graphql (1.11.0)
27
+ i18n (1.8.5)
28
28
  concurrent-ruby (~> 1.0)
29
- minitest (5.14.1)
29
+ minitest (5.14.2)
30
30
  rake (13.0.1)
31
31
  rspec (3.9.0)
32
32
  rspec-core (~> 3.9.0)
@@ -44,7 +44,7 @@ GEM
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.4.0)
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.15'
27
+ spec.add_runtime_dependency 'activecube', '~> 0.1.28'
28
28
  spec.add_runtime_dependency 'graphql', '~> 1.10'
29
29
 
30
30
  spec.add_development_dependency "bundler", "~> 1.17"
@@ -28,9 +28,7 @@ module Activecube
28
28
  @dimension = parent.dimension
29
29
  @field = (parent.field || dimension)[definition.to_sym]
30
30
  raise Activecube::InputArgumentError, "#{definition} not implemented for #{key} in cube #{cube.name}" unless @field
31
- elsif parent.metric
32
- raise Activecube::InputArgumentError, "Unexpected metric #{key} in cube #{cube.name}"
33
- else
31
+ elsif !parent.metric
34
32
  if !(@metric = (cube.metrics && cube.metrics[definition.to_sym])) && !(@dimension = (cube.dimensions && cube.dimensions[definition.to_sym]))
35
33
  raise Activecube::InputArgumentError, "Metric or dimension #{definition} for #{key} not defined for cube #{cube.name}"
36
34
  end
@@ -126,7 +124,7 @@ module Activecube
126
124
  raise Activecube::InputArgumentError, "Hash expected for selector, #{v} found instead" unless hash.kind_of?(Hash)
127
125
  selectors = hash.to_a.collect{|attr, expressions|
128
126
  k = attr.to_s.camelize(:lower).to_sym
129
- expressions.collect{|expression|
127
+ (expressions.kind_of?(Array) ? expressions : [expressions]).collect{|expression|
130
128
  expression.to_a.collect{|c|
131
129
  operator, arg = c
132
130
  selector = cube.selectors[k]
@@ -18,6 +18,10 @@ module Activecube::Graphql
18
18
  end
19
19
  end
20
20
 
21
+ def __typename
22
+ raise Activecube::InputArgumentError, "Add __typename to the element for UNION or INTERFACE entity to resolve the type"
23
+ end
24
+
21
25
  end
22
26
 
23
27
 
@@ -45,6 +49,8 @@ module Activecube::Graphql
45
49
  element = elements.first
46
50
  if element.children.empty?
47
51
  simple_value response_class, definition, element
52
+ elsif element.metric
53
+ array_value response_class, definition, element
48
54
  else
49
55
  sub_element response_class, definition, element
50
56
  end
@@ -95,9 +101,13 @@ module Activecube::Graphql
95
101
  end
96
102
  end
97
103
 
104
+ def node_type element
105
+ element.context_node.definition.type.try(:of_type).try(:name) || element.context_node.definition.type.try(:name)
106
+ end
107
+
98
108
  def simple_value response_class, definition, element
99
109
  index = @key_map[element.key]
100
- node_type = element.context_node.definition.type.try(:of_type).try(:name)
110
+ node_type = node_type element
101
111
  response_class.class_eval do
102
112
  define_method definition.underscore do |**rest_of_options|
103
113
  convert_type node_type, @row[index]
@@ -105,6 +115,34 @@ module Activecube::Graphql
105
115
  end
106
116
  end
107
117
 
118
+ def array_value response_class, definition, element
119
+ index = @key_map[element.key]
120
+ array_element_type = if element.children.empty?
121
+ node_type element
122
+ else
123
+ tuple = element.metric.definition.class.tuple
124
+ element.children.collect{|a| [ a.name, node_type(a), tuple.index(a.name.to_sym)] }
125
+ end
126
+
127
+ response_class.class_eval do
128
+ define_method definition.underscore do |**rest_of_options|
129
+ @row[index].map{|array_obj|
130
+ if array_obj.kind_of?(Array) && array_element_type.kind_of?(Array)
131
+ Hash[
132
+ array_element_type.map{|etype|
133
+ [etype.first.underscore, convert_type(etype.second, array_obj[etype.third])]
134
+ }]
135
+ elsif !array_obj.kind_of?(Array) && array_element_type.kind_of?(String)
136
+ convert_type(array_element_type, obj)
137
+ else
138
+ raise "Mismatched data in #{array_obj} with #{array_element_type} for #{definition} of #{element.key}"
139
+ end
140
+ }
141
+ end
142
+ end
143
+
144
+
145
+ end
108
146
 
109
147
  end
110
148
  end
@@ -1,5 +1,5 @@
1
1
  module Activecube
2
2
  module Graphql
3
- VERSION = "0.1.11"
3
+ VERSION = "0.1.16"
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.11
4
+ version: 0.1.16
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-06-17 00:00:00.000000000 Z
11
+ date: 2020-10-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.15
19
+ version: 0.1.28
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.15
26
+ version: 0.1.28
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: graphql
29
29
  requirement: !ruby/object:Gem::Requirement