diff --git a/lib/neography/relationship.rb b/lib/neography/relationship.rb index 383fac4..3f4f3a9 100644 --- a/lib/neography/relationship.rb +++ b/lib/neography/relationship.rb @@ -16,6 +16,14 @@ def create(type, from_node, to_node, props = nil) rel end + def create_unique(index, key, value, type, from_node, to_node, props = nil) + rel = Neography::Relationship.new(from_node.neo_server.create_unique_relationship(index, key, value, type, from_node, to_node, props)) + rel.start_node = from_node + rel.end_node = to_node + rel.rel_type = type + rel + end + def load(rel, db = Neography::Rest.new) raise ArgumentError.new("syntax deprecated") if rel.is_a?(Neography::Rest) diff --git a/lib/neography/rest.rb b/lib/neography/rest.rb index 1886d53..69f5cf1 100644 --- a/lib/neography/rest.rb +++ b/lib/neography/rest.rb @@ -347,8 +347,8 @@ def create_relationship_auto_index(type = "exact", provider = "lucene") @relationship_indexes.create_auto(type, provider) end - def create_unique_relationship(index, key, value, type, from, to) - @relationship_indexes.create_unique(index, key, value, type, from, to) + def create_unique_relationship(index, key, value, type, from, to, props = nil) + @relationship_indexes.create_unique(index, key, value, type, from, to, props) end def add_relationship_to_index(index, key, value, id) diff --git a/lib/neography/rest/relationship_indexes.rb b/lib/neography/rest/relationship_indexes.rb index b0a2aa6..9657b43 100644 --- a/lib/neography/rest/relationship_indexes.rb +++ b/lib/neography/rest/relationship_indexes.rb @@ -17,13 +17,14 @@ def initialize(connection) super(connection, :relationship) end - def create_unique(index, key, value, type, from, to) + def create_unique(index, key, value, type, from, to, props = nil) body = { :key => key, :value => value, :type => type, :start => @connection.configuration + "/node/#{get_id(from)}", - :end => @connection.configuration + "/node/#{get_id(to)}" + :end => @connection.configuration + "/node/#{get_id(to)}", + :properties => props } options = { :body => body.to_json, :headers => json_content_type } diff --git a/spec/unit/rest/relationship_indexes_spec.rb b/spec/unit/rest/relationship_indexes_spec.rb index 085e3a7..d98e2ce 100644 --- a/spec/unit/rest/relationship_indexes_spec.rb +++ b/spec/unit/rest/relationship_indexes_spec.rb @@ -47,10 +47,11 @@ class Rest "value" => "value", "type" => "type", "start" => "http://configuration/node/42", - "end" => "http://configuration/node/43" + "end" => "http://configuration/node/43", + "properties" => "properties" } connection.should_receive(:post).with("/index/relationship/some_index?unique", json_match(:body, expected_body)) - subject.create_unique("some_index", "key", "value", "type", "42", "43") + subject.create_unique("some_index", "key", "value", "type", "42", "43", "properties") end it "adds a relationship to an index" do