activecube-graphql 0.1.12 → 0.1.17

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: d7a79d0cc089791e544c599ba8559634a8a074546060c2c2920df07f2e8ff0a3
4
- data.tar.gz: a4b0e37c0f583a3f4661c393a42e0ce35ae2bcc25e062f433edcc355ac9df5b2
3
+ metadata.gz: 0e5804255ea980d0ad5383c66eeeaded38f3007606d2d881e67d9f82b39568ac
4
+ data.tar.gz: 1629c4328d4fff2a208e148e8801e6e382cd14a83efb913f3d883fe685b5f254
5
5
  SHA512:
6
- metadata.gz: e83c2195dabe965975f69e01833434eb0ed0b5ec81cbee5a6209ab8e0388d975d605316adc88626552bb344fdd0ea118ee9cc9fba305bf51df2afb43b34a7406
7
- data.tar.gz: 3f2c1161a22d9dd83afac7e02c0323d56a3fc1ca1e8ed83f7bfa8f3661061caa1364860661a3e10fc3f9fbc1b78bcc400ab989e5aec3fc677f4508f4eda3c69e
6
+ metadata.gz: 9345993f7fd7a1dd3cabd1a5b8e5c61aec452af852ed6896a17f1342e21580f9d80ad520195344da9e4fae748345bee04beb7b17a261635856f409919f7e0a1e
7
+ data.tar.gz: 558e40e26f530f0ea791f6aad3c94475f1be91dc99647542498b4215a082f5c332004ec7dfbaef9e4a25658eb9b1f805dfdb035f80ca887cdd07744f4ac5ac4c
@@ -1,14 +1,14 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- activecube-graphql (0.1.11)
5
- activecube (~> 0.1.15)
4
+ activecube-graphql (0.1.16)
5
+ activecube (~> 0.1.30)
6
6
  graphql (~> 1.10)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- activecube (0.1.24)
11
+ activecube (0.1.30)
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.6)
24
+ concurrent-ruby (1.1.7)
25
25
  diff-lcs (1.3)
26
- graphql (1.10.10)
27
- i18n (1.8.3)
26
+ graphql (1.11.0)
27
+ i18n (1.8.5)
28
28
  concurrent-ruby (~> 1.0)
29
- minitest (5.14.1)
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.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
@@ -100,12 +98,16 @@ module Activecube
100
98
  element
101
99
  end
102
100
 
101
+
103
102
  def converted_field_array method, values
104
- if [:desc,:asc].include?(method)
105
- values.collect{|v| KEY_FIELD_PREFIX + v}
106
- else
107
- values
108
- end
103
+ case method
104
+ when :desc,:asc
105
+ values.collect{|v| KEY_FIELD_PREFIX + v}
106
+ when :limit_by
107
+ values.merge({each: KEY_FIELD_PREFIX + values[:each]})
108
+ else
109
+ values
110
+ end
109
111
  end
110
112
 
111
113
  def apply_selector element, k, hash
@@ -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.context_node.definition.type.try(:of_type).try(:name)
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
@@ -1,5 +1,5 @@
1
1
  module Activecube
2
2
  module Graphql
3
- VERSION = "0.1.12"
3
+ VERSION = "0.1.17"
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.12
4
+ version: 0.1.17
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-07-16 00:00:00.000000000 Z
11
+ date: 2020-11-30 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