neography 1.2.3 → 1.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/neography/connection.rb +18 -2
- data/lib/neography/node.rb +8 -0
- data/lib/neography/relationship.rb +8 -0
- data/lib/neography/rest.rb +2 -2
- data/lib/neography/rest/batch.rb +15 -0
- data/lib/neography/rest/relationship_indexes.rb +3 -2
- data/lib/neography/version.rb +1 -1
- data/spec/integration/rest_batch_spec.rb +17 -0
- data/spec/unit/connection_spec.rb +25 -0
- data/spec/unit/rest/relationship_indexes_spec.rb +3 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fcd694c03de5bbb920692ee87085c2da39815c2b
|
4
|
+
data.tar.gz: 27cac259abff49d847b099819c6c5bd7f617f69f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 31203feeec0907870e2be162a47f201c78a1ab5e306119e6dd018ed711365f35b9580d87b48bfdb842b4e1f003162db2e2bf2b4bfa65ef9f1ad72a030ecd1e23
|
7
|
+
data.tar.gz: 79270c702fb7e25a6c9a8a2858dc510dbad1c60a333df6ecc2e7105c431ecee60be0371bba1c6c12ac9c755f511e772e19ea9b76e0c1f5952f34b250711c017e
|
data/lib/neography/connection.rb
CHANGED
@@ -40,11 +40,27 @@ module Neography
|
|
40
40
|
|
41
41
|
ACTIONS.each do |action|
|
42
42
|
define_method(action) do |path, options = {}|
|
43
|
-
|
44
|
-
|
43
|
+
query_path = configuration + path
|
44
|
+
query_body = merge_options(options)[:body]
|
45
|
+
authenticate(query_path)
|
46
|
+
log path, query_body do
|
47
|
+
evaluate_response(@client.send(action.to_sym, query_path, query_body, merge_options(options)[:headers]))
|
48
|
+
end
|
45
49
|
end
|
46
50
|
end
|
47
51
|
|
52
|
+
def log(path, body)
|
53
|
+
if @log_enabled
|
54
|
+
start_time = Time.now
|
55
|
+
response = yield
|
56
|
+
time = ((Time.now - start_time) * 1000).round(2)
|
57
|
+
@logger.info "[Neography::Query] #{path} #{body} [#{time}ms]"
|
58
|
+
response
|
59
|
+
else
|
60
|
+
yield
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
48
64
|
def authenticate(path)
|
49
65
|
@client.set_auth(path,
|
50
66
|
@authentication[@authentication.keys.first][:username],
|
data/lib/neography/node.rb
CHANGED
@@ -17,6 +17,14 @@ module Neography
|
|
17
17
|
node
|
18
18
|
end
|
19
19
|
|
20
|
+
def create_unique(index, key, value, props = nil, db = Neography::Rest.new)
|
21
|
+
raise ArgumentError.new("syntax deprecated") if props.is_a?(Neography::Rest)
|
22
|
+
|
23
|
+
node = self.new(db.create_unique_node(index, key, value, props))
|
24
|
+
node.neo_server = db
|
25
|
+
node
|
26
|
+
end
|
27
|
+
|
20
28
|
def load(node, db = Neography::Rest.new)
|
21
29
|
raise ArgumentError.new("syntax deprecated") if node.is_a?(Neography::Rest)
|
22
30
|
node = node.first if node.kind_of?(Array)
|
@@ -16,6 +16,14 @@ module Neography
|
|
16
16
|
rel
|
17
17
|
end
|
18
18
|
|
19
|
+
def create_unique(index, key, value, type, from_node, to_node, props = nil)
|
20
|
+
rel = Neography::Relationship.new(from_node.neo_server.create_unique_relationship(index, key, value, type, from_node, to_node, props))
|
21
|
+
rel.start_node = from_node
|
22
|
+
rel.end_node = to_node
|
23
|
+
rel.rel_type = type
|
24
|
+
rel
|
25
|
+
end
|
26
|
+
|
19
27
|
def load(rel, db = Neography::Rest.new)
|
20
28
|
raise ArgumentError.new("syntax deprecated") if rel.is_a?(Neography::Rest)
|
21
29
|
|
data/lib/neography/rest.rb
CHANGED
@@ -347,8 +347,8 @@ module Neography
|
|
347
347
|
@relationship_indexes.create_auto(type, provider)
|
348
348
|
end
|
349
349
|
|
350
|
-
def create_unique_relationship(index, key, value, type, from, to)
|
351
|
-
@relationship_indexes.create_unique(index, key, value, type, from, to)
|
350
|
+
def create_unique_relationship(index, key, value, type, from, to, props = nil)
|
351
|
+
@relationship_indexes.create_unique(index, key, value, type, from, to, props)
|
352
352
|
end
|
353
353
|
|
354
354
|
def add_relationship_to_index(index, key, value, id)
|
data/lib/neography/rest/batch.rb
CHANGED
@@ -54,6 +54,21 @@ module Neography
|
|
54
54
|
|
55
55
|
# NodeIndexes
|
56
56
|
|
57
|
+
def create_node_index(name, type = "exact", provider = "lucene")
|
58
|
+
post NodeIndexes.all_path do
|
59
|
+
{ :name => name,
|
60
|
+
:config => {
|
61
|
+
:type => type,
|
62
|
+
:provider => provider
|
63
|
+
}
|
64
|
+
}
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
def drop_node_index(index)
|
69
|
+
delete NodeIndexes.unique_path(:index => index)
|
70
|
+
end
|
71
|
+
|
57
72
|
def create_unique_node(index, key, value, properties)
|
58
73
|
post NodeIndexes.unique_path(:index => index) do
|
59
74
|
{
|
@@ -17,13 +17,14 @@ module Neography
|
|
17
17
|
super(connection, :relationship)
|
18
18
|
end
|
19
19
|
|
20
|
-
def create_unique(index, key, value, type, from, to)
|
20
|
+
def create_unique(index, key, value, type, from, to, props = nil)
|
21
21
|
body = {
|
22
22
|
:key => key,
|
23
23
|
:value => value,
|
24
24
|
:type => type,
|
25
25
|
:start => @connection.configuration + "/node/#{get_id(from)}",
|
26
|
-
:end => @connection.configuration + "/node/#{get_id(to)}"
|
26
|
+
:end => @connection.configuration + "/node/#{get_id(to)}",
|
27
|
+
:properties => props
|
27
28
|
}
|
28
29
|
options = { :body => body.to_json, :headers => json_content_type }
|
29
30
|
|
data/lib/neography/version.rb
CHANGED
@@ -210,6 +210,23 @@ describe Neography::Rest do
|
|
210
210
|
existing_relationship["self"].should == new_relationship["self"]
|
211
211
|
end
|
212
212
|
|
213
|
+
it "can drop a node index" do
|
214
|
+
index_name = generate_text(6)
|
215
|
+
@neo.create_node_index(index_name)
|
216
|
+
@neo.batch [:drop_node_index, index_name]
|
217
|
+
@neo.list_node_indexes[index_name].should be_nil
|
218
|
+
end
|
219
|
+
|
220
|
+
it "can create a node index" do
|
221
|
+
index_name = generate_text(6)
|
222
|
+
@neo.batch [:create_node_index, index_name, "fulltext", "lucene"]
|
223
|
+
indexes = @neo.list_node_indexes
|
224
|
+
index = indexes[index_name]
|
225
|
+
index.should_not be_nil
|
226
|
+
index["provider"].should == "lucene"
|
227
|
+
index["type"].should == "fulltext"
|
228
|
+
end
|
229
|
+
|
213
230
|
it "can add a node to an index" do
|
214
231
|
index_name = generate_text(6)
|
215
232
|
new_node = @neo.create_node
|
@@ -204,6 +204,31 @@ module Neography
|
|
204
204
|
end
|
205
205
|
|
206
206
|
end
|
207
|
+
|
208
|
+
context "query logging" do
|
209
|
+
before do
|
210
|
+
connection.logger = Logger.new(nil)
|
211
|
+
connection.log_enabled = true
|
212
|
+
end
|
213
|
+
|
214
|
+
let :expected_response do
|
215
|
+
"expected_response"
|
216
|
+
end
|
217
|
+
|
218
|
+
let :request_body do
|
219
|
+
{key1: :val1}
|
220
|
+
end
|
221
|
+
|
222
|
+
it "should log query" do
|
223
|
+
connection.should_receive(:log).with("/foo/bar", request_body).once
|
224
|
+
connection.get("/foo/bar", {body: request_body})
|
225
|
+
end
|
226
|
+
|
227
|
+
it "should return original response" do
|
228
|
+
connection.stub(:evaluate_response).and_return expected_response
|
229
|
+
connection.get("/foo/bar").should eq expected_response
|
230
|
+
end
|
231
|
+
end
|
207
232
|
end
|
208
233
|
end
|
209
234
|
end
|
@@ -47,10 +47,11 @@ module Neography
|
|
47
47
|
"value" => "value",
|
48
48
|
"type" => "type",
|
49
49
|
"start" => "http://configuration/node/42",
|
50
|
-
"end" => "http://configuration/node/43"
|
50
|
+
"end" => "http://configuration/node/43",
|
51
|
+
"properties" => "properties"
|
51
52
|
}
|
52
53
|
connection.should_receive(:post).with("/index/relationship/some_index?unique", json_match(:body, expected_body))
|
53
|
-
subject.create_unique("some_index", "key", "value", "type", "42", "43")
|
54
|
+
subject.create_unique("some_index", "key", "value", "type", "42", "43", "properties")
|
54
55
|
end
|
55
56
|
|
56
57
|
it "adds a relationship to an index" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: neography
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Max De Marzi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-12-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|