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 +4 -4
- data/Gemfile.lock +4 -4
- data/activecube-graphql.gemspec +1 -1
- data/lib/activecube/graphql/parse_tree.rb +1 -3
- data/lib/activecube/graphql/response_builder.rb +40 -2
- data/lib/activecube/graphql/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9d5d6b3307a4e2359db0a37d46649aa58b8baf3e3d0328cbe4db5b6347522e23
|
4
|
+
data.tar.gz: d9c2a2f67151f55e017bd7d9d2e029da88b992d548366912399980a70ed88c3a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6aa3fa255855597dce309b1913d2fb2e76fdaa2a849a6de5c23895d10f580d493f8a84c55adccf224b653d01702e91c1e486ffa762b5ae65d0d8602f4aac850f
|
7
|
+
data.tar.gz: 3f76d466793c5575f10b0ba4f2a9b2e0aa832fabbc5706a5880f1a7becd95367f7ece3176e1910594cc1d10f77d84a42acde5427cdfe941933231c8afce4f6a8
|
data/Gemfile.lock
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
activecube-graphql (0.1.
|
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.
|
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.
|
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.
|
47
|
+
zeitwerk (2.4.0)
|
48
48
|
|
49
49
|
PLATFORMS
|
50
50
|
ruby
|
data/activecube-graphql.gemspec
CHANGED
@@ -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.
|
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
|
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
|
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.
|
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-
|
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.
|
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.
|
26
|
+
version: 0.1.28
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: graphql
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|