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 +4 -4
- data/Gemfile.lock +8 -8
- data/activecube-graphql.gemspec +1 -1
- data/lib/activecube/graphql/parse_tree.rb +2 -4
- data/lib/activecube/graphql/response_builder.rb +39 -1
- 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: f44937cd21cc7bbe8d77a097c5d355691574a2c0510b6ed3f2c0f602056166eb
|
4
|
+
data.tar.gz: 8244907400ae4e304d73a494d40576f1c1fc187f173f6fb2bd96ff1bf315b62d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9096d95623776426039afa5b9d05dccf1873afa1beac11d83c4050ad12e8a12ae3e8b352f452735f4b45562ec9c7ec1c80fa486e8b83e2357bbded5d63fa74ae
|
7
|
+
data.tar.gz: 3bc0b34cdc95c96cbcf910520b7f8718da54dba79cb08cf60798cce57feeb1b6688529efead6030f08c05dcd03f10eaeabd9bcc48b5b3c8e329c32981e8e2cbb
|
data/Gemfile.lock
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
activecube-graphql (0.1.
|
5
|
-
activecube (~> 0.1.
|
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.
|
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.
|
24
|
+
concurrent-ruby (1.1.7)
|
25
25
|
diff-lcs (1.3)
|
26
|
-
graphql (1.
|
27
|
-
i18n (1.8.
|
26
|
+
graphql (1.11.0)
|
27
|
+
i18n (1.8.5)
|
28
28
|
concurrent-ruby (~> 1.0)
|
29
|
-
minitest (5.14.
|
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.
|
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
|
@@ -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
|
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
|
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.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-
|
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.
|
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
|