class Activecube::Graphql::CubeField
Attributes
cube[R]
Public Class Methods
new(*args, cube: nil, **kwargs, &block)
click to toggle source
Override initialize to take a new argument cube:
Calls superclass method
# File lib/activecube/graphql/cube_field.rb, line 18 def initialize(*args, cube: nil, **kwargs, &block) @cube = cube # Pass on the default args: super(*args, **kwargs, &block) append_extra :irep_node end
Public Instance Methods
resolve_field_method(obj, ruby_kwargs, ctx)
click to toggle source
Calls superclass method
# File lib/activecube/graphql/cube_field.rb, line 25 def resolve_field_method(obj, ruby_kwargs, ctx) return super unless cube irep_node = ruby_kwargs[:irep_node] tree = ParseTree.new cube, irep_node database = obj.object.kind_of?(Hash) && obj.object[:database] response = database ? cube.connected_to(database: database) do execute_query(tree, ctx) end : execute_query(tree, ctx) if ctx[:stat_io].respond_to?(:puts) && response.respond_to?(:statistics) ctx[:stat_io].puts(response.statistics) end ResponseBuilder.new tree, response rescue Activecube::InputArgumentError => ex raise GraphQL::ExecutionError, "Error executing #{cube.name}: #{ex.message}" end
Private Instance Methods
append_extra(extra)
click to toggle source
# File lib/activecube/graphql/cube_field.rb, line 55 def append_extra extra unless @extras.include? extra @extras << extra end end
execute_query(tree, ctx)
click to toggle source
# File lib/activecube/graphql/cube_field.rb, line 49 def execute_query tree, ctx cube_query = tree.build_query ctx[:sql_io].puts(cube_query.to_sql) if ctx[:sql_io].respond_to?(:puts) cube_query.query end