activecube-graphql 0.1.10 → 0.1.15

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 00364d26bb3b05f6e46b938e672355a0a27389274008ceaacfd9cbb96b4ed0e5
4
- data.tar.gz: d4159c411c066d878941f2d63910afb8fab28e63e00c01441c1d6fee433937ad
3
+ metadata.gz: 27461624bcbb8ab32b0c2c49bb595d2ee47564f0d5011093abc1caf3804dd952
4
+ data.tar.gz: 16d7148370270e3d4d3fdf6b46f7c326f8bc215627ed71a3ff55198e764837a2
5
5
  SHA512:
6
- metadata.gz: 60e61e324d31f426102f7cf80026f39e74628090acf6c62de061848550fa10496bc2e65d2b4f232639e365f49574bd20e6d6a28121a64385ecd1548860c2d134
7
- data.tar.gz: b2188ecb830cf637ecd4b40d5bac528efc1b2981961dfa4bac64e11f37c7c042f5fcb2c4939ee7f3ba0c3a49967644cc545c2f98f2bf2fc16c18c3e5d5816b9e
6
+ metadata.gz: 23e6a27f88fc1c39e3af48d6e1aa425f9135f522b91179f027f669bd881e82d3ae22f3d7bee965081f8d406894399860ccaab7c0335b03dbf6e6545f536db073
7
+ data.tar.gz: a32974804ff32a49fdf37d8d897d5c1e88281539ef6cbecac1b9d79c68f9574441073ea344c2899949f3f2aabe56f8a02023468c9566ea9f38005d57465b5262
@@ -1,50 +1,50 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- activecube-graphql (0.1.8)
5
- activecube (~> 0.1.14)
4
+ activecube-graphql (0.1.14)
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.14)
11
+ activecube (0.1.28)
12
12
  activerecord (>= 5.2)
13
- activemodel (6.0.2.2)
14
- activesupport (= 6.0.2.2)
15
- activerecord (6.0.2.2)
16
- activemodel (= 6.0.2.2)
17
- activesupport (= 6.0.2.2)
18
- activesupport (6.0.2.2)
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)
24
- concurrent-ruby (1.1.6)
23
+ zeitwerk (~> 2.2, >= 2.2.2)
24
+ concurrent-ruby (1.1.7)
25
25
  diff-lcs (1.3)
26
- graphql (1.10.6)
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.0)
29
+ minitest (5.14.2)
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.1)
36
- rspec-support (~> 3.9.1)
37
- rspec-expectations (3.9.0)
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.2)
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.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]
@@ -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.context_node.definition.type.name
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,34 @@ 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
+ element.children.collect{|a| [ a.name, node_type(a), tuple.index(a.name.to_sym)] }
121
+ end
122
+
123
+ response_class.class_eval do
124
+ define_method definition.underscore do |**rest_of_options|
125
+ @row[index].map{|array_obj|
126
+ if array_obj.kind_of?(Array) && array_element_type.kind_of?(Array)
127
+ Hash[
128
+ array_element_type.map{|etype|
129
+ [etype.first.underscore, convert_type(etype.second, array_obj[etype.third])]
130
+ }]
131
+ elsif !array_obj.kind_of?(Array) && array_element_type.kind_of?(String)
132
+ convert_type(array_element_type, obj)
133
+ else
134
+ raise "Mismatched data in #{array_obj} with #{array_element_type} for #{definition} of #{element.key}"
135
+ end
136
+ }
137
+ end
138
+ end
139
+
140
+
141
+ end
108
142
 
109
143
  end
110
144
  end
@@ -1,5 +1,5 @@
1
1
  module Activecube
2
2
  module Graphql
3
- VERSION = "0.1.10"
3
+ VERSION = "0.1.15"
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.10
4
+ version: 0.1.15
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-04-17 00:00:00.000000000 Z
11
+ date: 2020-09-25 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