neography 1.0.5 → 1.0.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -7,34 +7,43 @@ module Neography
7
7
 
8
8
  def add_to_index(index, key, value)
9
9
  if self.is_a? Neography::Node
10
- neo_server.add_node_to_index(index, key, value, self.neo_id)
10
+ self.neo_server.add_node_to_index(index, key, value, self.neo_id)
11
11
  else
12
- neo_server.add_relationship_to_index(index, key, value, self.neo_id)
12
+ self.neo_server.add_relationship_to_index(index, key, value, self.neo_id)
13
13
  end
14
14
  end
15
15
 
16
16
  def remove_from_index(*args)
17
17
  if self.is_a? Neography::Node
18
- neo_server.remove_node_from_index(*args)
18
+ self.neo_server.remove_node_from_index(*args)
19
19
  else
20
- neo_server.remove_relationship_from_index(*args)
20
+ self.neo_server.remove_relationship_from_index(*args)
21
21
  end
22
22
  end
23
23
 
24
24
  module ClassMethods
25
25
  def find(*args)
26
- if name == "Neography::Node"
27
- if args.size > 1
28
- neo_server.find_node_index(*args)
29
- else
30
- neo_server.get_node_index(*args)
26
+ db = args[3] ? args.pop : Neography::Rest.new
27
+
28
+ if self.inspect == "Neography::Node"
29
+ nodes = []
30
+ results = db.find_node_index(*args)
31
+ return nil unless results
32
+ results.each do |r|
33
+ node = self.new(r)
34
+ node.neo_server = db
35
+ nodes << node
31
36
  end
37
+ nodes.size > 1 ? nodes : nodes.first
32
38
  else
33
- if args.size > 1
34
- neo_server.find_relationship_index(*args)
35
- else
36
- neo_server.get_relationship_index(*args)
39
+ rels = []
40
+ results = db.find_relationship_index(*args)
41
+ return nil unless results
42
+ results.each do |r|
43
+ rel = self.new(r, db)
44
+ rels << rel
37
45
  end
46
+ rels.size > 1 ? rels : rels.first
38
47
  end
39
48
  end
40
49
  end
@@ -29,6 +29,11 @@ module Neography
29
29
  end
30
30
 
31
31
  #alias_method :new, :create
32
+ end
33
+
34
+ def find(*args)
35
+ node = self.new
36
+ node.find(args)
32
37
  end
33
38
 
34
39
  def del
@@ -121,7 +121,7 @@ module Neography
121
121
  options["depth"] = @depth unless @depth.nil?
122
122
 
123
123
  if @relationships[0]["type"].empty?
124
- rels = @from.neo_server.get_node_relationships(@from, @relationships[0]["direction"])
124
+ rels = @from.neo_server.get_node_relationships(@from, @relationships[0]["direction"]) || []
125
125
  case @relationships[0]["direction"]
126
126
  when "in"
127
127
  rels.collect { |r| @from.neo_server.get_node(r["start"]) } #.uniq
@@ -1,3 +1,3 @@
1
1
  module Neography
2
- VERSION = "1.0.5"
2
+ VERSION = "1.0.6"
3
3
  end
@@ -18,4 +18,38 @@ describe Neography::Index do
18
18
  r.add_to_index("relationship_test_index", key, value)
19
19
  end
20
20
 
21
+ it "can find a node in an index" do
22
+ value = generate_text
23
+ new_node = Neography::Node.create("name" => value)
24
+ new_node.add_to_index("node_test_index", "name", value)
25
+ existing_node = Neography::Node.find("node_test_index", "name", value)
26
+ existing_node.name.should == value
27
+ end
28
+
29
+ it "can find a relationship in an index" do
30
+ value = generate_text
31
+ node1 = Neography::Node.create
32
+ node2 = Neography::Node.create
33
+ r = Neography::Relationship.create(:friends, node1, node2, {"name" => value})
34
+ r.add_to_index("relationship_test_index", "name", value)
35
+ existing_r = Neography::Relationship.find("relationship_test_index", "name", value)
36
+ existing_r.name.should == value
37
+ end
38
+
39
+ it "can find multiple nodes in an index" do
40
+ value1 = generate_text
41
+ value2 = generate_text
42
+ value3 = generate_text
43
+ node1 = Neography::Node.create("first_name" => value1, "last_name" => value2)
44
+ node1.add_to_index("node_test_index", "first_name", value1)
45
+ node2 = Neography::Node.create("first_name" => value1, "last_name" => value3)
46
+ node2.add_to_index("node_test_index", "first_name", value1)
47
+
48
+ existing_nodes = Neography::Node.find("node_test_index", "first_name", value1)
49
+ existing_nodes.size.should == 2
50
+ existing_nodes.first.last_name.should == value2
51
+ existing_nodes.last.last_name.should == value3
52
+ end
53
+
54
+
21
55
  end
@@ -157,6 +157,11 @@ describe Neography::NodeRelationship do
157
157
  b.outgoing.should include(c)
158
158
  end
159
159
 
160
+ it "#both returns an empty array for unconnected nodes" do
161
+ a = Neography::Node.create
162
+ a.both.size.should == 0
163
+ end
164
+
160
165
  it "#both(type) should return both incoming and outgoing nodes of the given type of depth one" do
161
166
  a,b,c,d,e,f = create_nodes
162
167
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: neography
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.5
4
+ version: 1.0.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-01-18 00:00:00.000000000 Z
12
+ date: 2013-01-24 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec