activecube-graphql 0.1.9 → 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 +18 -18
- data/activecube-graphql.gemspec +1 -1
- data/lib/activecube/graphql/parse_tree.rb +2 -4
- data/lib/activecube/graphql/response_builder.rb +40 -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: 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,50 +1,50 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
activecube-graphql (0.1.
|
5
|
-
activecube (~> 0.1.
|
4
|
+
activecube-graphql (0.1.13)
|
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
|
-
activemodel (6.0.
|
14
|
-
activesupport (= 6.0.
|
15
|
-
activerecord (6.0.
|
16
|
-
activemodel (= 6.0.
|
17
|
-
activesupport (= 6.0.
|
18
|
-
activesupport (6.0.
|
13
|
+
activemodel (6.0.3.1)
|
14
|
+
activesupport (= 6.0.3.1)
|
15
|
+
activerecord (6.0.3.1)
|
16
|
+
activemodel (= 6.0.3.1)
|
17
|
+
activesupport (= 6.0.3.1)
|
18
|
+
activesupport (6.0.3.1)
|
19
19
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
20
20
|
i18n (>= 0.7, < 2)
|
21
21
|
minitest (~> 5.1)
|
22
22
|
tzinfo (~> 1.1)
|
23
|
-
zeitwerk (~> 2.2)
|
23
|
+
zeitwerk (~> 2.2, >= 2.2.2)
|
24
24
|
concurrent-ruby (1.1.6)
|
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.1)
|
30
30
|
rake (13.0.1)
|
31
31
|
rspec (3.9.0)
|
32
32
|
rspec-core (~> 3.9.0)
|
33
33
|
rspec-expectations (~> 3.9.0)
|
34
34
|
rspec-mocks (~> 3.9.0)
|
35
|
-
rspec-core (3.9.
|
36
|
-
rspec-support (~> 3.9.
|
37
|
-
rspec-expectations (3.9.
|
35
|
+
rspec-core (3.9.2)
|
36
|
+
rspec-support (~> 3.9.3)
|
37
|
+
rspec-expectations (3.9.2)
|
38
38
|
diff-lcs (>= 1.2.0, < 2.0)
|
39
39
|
rspec-support (~> 3.9.0)
|
40
40
|
rspec-mocks (3.9.1)
|
41
41
|
diff-lcs (>= 1.2.0, < 2.0)
|
42
42
|
rspec-support (~> 3.9.0)
|
43
|
-
rspec-support (3.9.
|
43
|
+
rspec-support (3.9.3)
|
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]
|
@@ -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,9 +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
|
106
|
+
node_type = node_type element
|
101
107
|
response_class.class_eval do
|
102
108
|
define_method definition.underscore do |**rest_of_options|
|
103
109
|
convert_type node_type, @row[index]
|
@@ -105,6 +111,39 @@ module Activecube::Graphql
|
|
105
111
|
end
|
106
112
|
end
|
107
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
|
108
147
|
|
109
148
|
end
|
110
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
|