Skip to content

Commit 41c529b

Browse files
committed
support Boolean and simple ( no field ) dimensions
1 parent 7cb540c commit 41c529b

File tree

2 files changed

+16
-6
lines changed

2 files changed

+16
-6
lines changed

lib/activecube/graphql/parse_tree.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ class ParseTree
55
class Element
66

77
attr_reader :arguments, :ast_node, :cube, :parent, :name, :definition, :key,
8-
:children, :metric, :dimension, :field
8+
:children, :metric, :dimension, :field, :context_node
99
def initialize cube, context_node, parent = nil
1010

1111
@cube = cube
@@ -14,6 +14,7 @@ def initialize cube, context_node, parent = nil
1414
@name = context_node.name
1515
@key = parent ? (parent.key ? "#{parent.key}.#{name}" : name ) : nil
1616

17+
@context_node = context_node
1718
@arguments = context_node.arguments.to_h
1819

1920
@ast_node = context_node.ast_node

lib/activecube/graphql/response_builder.rb

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,15 @@ def initialize row
99
@row = row
1010
end
1111

12+
def convert_type node_type, value
13+
case node_type
14+
when 'Boolean' then
15+
value==1
16+
else
17+
value
18+
end
19+
end
20+
1221
end
1322

1423

@@ -55,7 +64,7 @@ def match_elements response_class, definition, elements
5564

5665
index = Hash[elements.collect { |element|
5766
value = if element.children.empty?
58-
@key_map[element.key]
67+
[@key_map[element.key], element.context_node.definition.type.name]
5968
else
6069
build_response_class element
6170
end
@@ -67,8 +76,8 @@ def match_elements response_class, definition, elements
6776
key = ast_node.alias || ast_node.name
6877
if (value = index[key]).kind_of? Class
6978
value.new @row
70-
elsif value.kind_of? Integer
71-
@row[value]
79+
elsif value.kind_of? Array
80+
convert_type value.second, @row[value.first]
7281
else
7382
raise ArgumentError, "Unexpected request to #{definition} by key #{key}"
7483
end
@@ -88,14 +97,14 @@ def sub_element response_class, definition, element
8897

8998
def simple_value response_class, definition, element
9099
index = @key_map[element.key]
100+
node_type = element.context_node.definition.type.name
91101
response_class.class_eval do
92102
define_method definition.underscore do |**rest_of_options|
93-
@row[index]
103+
convert_type node_type, @row[index]
94104
end
95105
end
96106
end
97107

98108

99-
100109
end
101110
end

0 commit comments

Comments
 (0)