class GraphQL::Execution::Execute

@api private
A valid execution strategy

def self.begin_multiplex(_multiplex)

def self.begin_multiplex(_multiplex)
end

def self.begin_query(query, _multiplex)

def self.begin_query(query, _multiplex)
  ExecutionFunctions.resolve_root_selection(query)
end

def self.finish_multiplex(results, multiplex)

def self.finish_multiplex(results, multiplex)
  ExecutionFunctions.lazy_resolve_root_selection(results, multiplex: multiplex)
end

def self.finish_query(query, _multiplex)

def self.finish_query(query, _multiplex)
  {
    "data" => Execution::Flatten.call(query.context)
  }
end

def execute(ast_operation, root_type, query)

def execute(ast_operation, root_type, query)
  result = resolve_root_selection(query)
  lazy_resolve_root_selection(result, **{query: query})
  GraphQL::Execution::Flatten.call(query.context)
end