activecube-graphql 0.1.13 → 0.1.14

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: 69d003fbb6f3968b2e25390e2b4177fd46ec075415f47644f7a0947237800275
4
- data.tar.gz: a46404f52537cb50f19f2ccc99af7a0f866742e0ef27297b1606ea3cface3fee
3
+ metadata.gz: 9d5d6b3307a4e2359db0a37d46649aa58b8baf3e3d0328cbe4db5b6347522e23
4
+ data.tar.gz: d9c2a2f67151f55e017bd7d9d2e029da88b992d548366912399980a70ed88c3a
5
5
  SHA512:
6
- metadata.gz: b9021ccee3198ebd7bc25aed42bee1b13689da056a5100e56a42d99ee7dc7dac1d5f8213c412ff972a1149ee39c0b5f88b928c30922919d77113b7fe022de774
7
- data.tar.gz: 67b421e11ae30b5127da95da2f964683fb389b7d527cc2429272f30139e90a9256854442534d0846eb58408c38517160558a66e31ad15de630ef753e97489869
6
+ metadata.gz: 6aa3fa255855597dce309b1913d2fb2e76fdaa2a849a6de5c23895d10f580d493f8a84c55adccf224b653d01702e91c1e486ffa762b5ae65d0d8602f4aac850f
7
+ data.tar.gz: 3f76d466793c5575f10b0ba4f2a9b2e0aa832fabbc5706a5880f1a7becd95367f7ece3176e1910594cc1d10f77d84a42acde5427cdfe941933231c8afce4f6a8
@@ -1,14 +1,14 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- activecube-graphql (0.1.12)
4
+ activecube-graphql (0.1.13)
5
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.26)
11
+ activecube (0.1.27)
12
12
  activerecord (>= 5.2)
13
13
  activemodel (6.0.3.1)
14
14
  activesupport (= 6.0.3.1)
@@ -24,7 +24,7 @@ GEM
24
24
  concurrent-ruby (1.1.6)
25
25
  diff-lcs (1.3)
26
26
  graphql (1.11.0)
27
- i18n (1.8.3)
27
+ i18n (1.8.5)
28
28
  concurrent-ruby (~> 1.0)
29
29
  minitest (5.14.1)
30
30
  rake (13.0.1)
@@ -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.1)
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
@@ -45,6 +45,8 @@ module Activecube::Graphql
45
45
  element = elements.first
46
46
  if element.children.empty?
47
47
  simple_value response_class, definition, element
48
+ elsif element.metric
49
+ array_value response_class, definition, element
48
50
  else
49
51
  sub_element response_class, definition, element
50
52
  end
@@ -95,10 +97,13 @@ module Activecube::Graphql
95
97
  end
96
98
  end
97
99
 
100
+ def node_type element
101
+ element.context_node.definition.type.try(:of_type).try(:name) || element.context_node.definition.type.try(:name)
102
+ end
103
+
98
104
  def simple_value response_class, definition, element
99
105
  index = @key_map[element.key]
100
- node_type = element.context_node.definition.type.try(:of_type).try(:name) ||
101
- element.context_node.definition.type.try(:name)
106
+ node_type = node_type element
102
107
  response_class.class_eval do
103
108
  define_method definition.underscore do |**rest_of_options|
104
109
  convert_type node_type, @row[index]
@@ -106,6 +111,39 @@ module Activecube::Graphql
106
111
  end
107
112
  end
108
113
 
114
+ def array_value response_class, definition, element
115
+ index = @key_map[element.key]
116
+ array_element_type = if element.children.empty?
117
+ node_type element
118
+ else
119
+ tuple = element.metric.definition.class.tuple
120
+ raise "Sizes of tuple #{element.children.size} not expected as in definition #{tuple}" unless tuple && tuple.size==element.children.size
121
+
122
+ element.children.collect{|a|
123
+ [a.name, node_type(a)]
124
+ }.sort_by{|x| tuple.index x.first.to_sym }
125
+
126
+ end
127
+
128
+ response_class.class_eval do
129
+ define_method definition.underscore do |**rest_of_options|
130
+ @row[index].map{|array_obj|
131
+ if array_obj.kind_of?(Array) && array_element_type.kind_of?(Array) && array_obj.size==array_element_type.size
132
+ Hash[array_obj.each_with_index.map{|obj, index|
133
+ etype = array_element_type[index]
134
+ [etype.first.underscore, convert_type(etype.second, obj)]
135
+ }]
136
+ elsif !array_obj.kind_of?(Array) && array_element_type.kind_of?(String)
137
+ convert_type(array_element_type, obj)
138
+ else
139
+ raise "Mismatched data in #{array_obj} with #{array_element_type} for #{definition} of #{element.key}"
140
+ end
141
+ }
142
+ end
143
+ end
144
+
145
+
146
+ end
109
147
 
110
148
  end
111
149
  end
@@ -1,5 +1,5 @@
1
1
  module Activecube
2
2
  module Graphql
3
- VERSION = "0.1.13"
3
+ VERSION = "0.1.14"
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.13
4
+ version: 0.1.14
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-08-03 00:00:00.000000000 Z
11
+ date: 2020-09-09 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