Skip to content

Instantly share code, notes, and snippets.

@maxdemarzi
Created November 22, 2010 07:00
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save maxdemarzi/709623 to your computer and use it in GitHub Desktop.
Save maxdemarzi/709623 to your computer and use it in GitHub Desktop.
Test Traversal
#<- "POST /db/data/node/6227/traverse/node HTTP/1.1\r\nContent-Type: application/json\r\nConnection: close\r\nHost: localhost:7474\r\nContent-Length: 567\r\n\r\n"
#<- "{\"order\":\"breadth first\",\"uniqueness\":\"node global\",\"relationships\":{\"type\":\"linked\",\"direction\":\"out\"},\"prune evaluator\":{\"language\":\"javascript\",\"body\":\"position.startNode().hasProperty('NODE_LEVEL') && position.startNode().getProperty('NODE_LEVEL')==5 && position.startNode().getId()!=6227;\"},\"return filter\":{\"language\":\"javascript\",\"body\":\"position.endNode().hasProperty('NODE_LEVEL') && position.endNode().getProperty('NODE_LEVEL')==5;\"}}"
require 'rubygems'
require 'neography'
# require 'net-http-spy'
# Net::HTTP.http_logger_options = {:verbose => true} # see everything
@neo = Neography::Rest.new
def create_node(level, type)
@neo.create_node("NODE_LEVEL" => level, "TYPE" => type)
end
def create_other_node(type)
@neo.create_node("TYPE" => type)
end
def get_nodes_by_level(level, node)
starting_id = node["self"].split('/').last
@neo.traverse(node,"nodes", {"order" => "breadth first",
"uniqueness" => "node global",
"relationships" => {"type"=> "linked", "direction" => "out"},
"prune evaluator" => {
"language" => "javascript",
"body" => "position.startNode().hasProperty('NODE_LEVEL')
&& position.startNode().getProperty('NODE_LEVEL')==5
&& position.startNode().getId()!=#{starting_id};"},
"return filter" => {
"language" => "javascript",
"body" => "position.endNode().hasProperty('NODE_LEVEL') && position.endNode().getProperty('NODE_LEVEL')==5;"}})
end
node1 = create_node(5, "N")
node2 = create_node(5, "N")
node3 = create_node(5, "N")
node4 = create_node(5, "N")
node5 = create_node(5, "N")
node6 = create_node(5, "N")
node7 = create_node(5, "N")
node8 = create_other_node("Y")
node9 = create_other_node("Y")
node10 = create_other_node("Y")
node11 = create_node(6, "N")
node12 = create_node(7, "N")
node13 = create_node(8, "N")
@neo.create_relationship("linked", node1, node2)
@neo.create_relationship("linked", node2, node3)
@neo.create_relationship("linked", node3, node4)
@neo.create_relationship("linked", node4, node5)
@neo.create_relationship("linked", node5, node6)
@neo.create_relationship("linked", node6, node7)
@neo.create_relationship("linked", node2, node8)
@neo.create_relationship("linked", node3, node9)
@neo.create_relationship("linked", node4, node10)
@neo.create_relationship("linked", node5, node11)
@neo.create_relationship("linked", node6, node12)
@neo.create_relationship("linked", node7, node13)
puts "The node levels returned are #{get_nodes_by_level(5, node1).map{|n| n["data"]["NODE_LEVEL"]}.join(', ')}"
# The node levels returned are 5, 5, 5, 5, 5, 5, 5
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment