activecube-graphql 0.1.12 → 0.1.17

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: 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