neography 1.3.14 → 1.4.0

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.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/lib/neography/rest.rb +29 -472
  3. data/lib/neography/rest/batch.rb +80 -87
  4. data/lib/neography/rest/clean.rb +8 -10
  5. data/lib/neography/rest/constraints.rb +15 -25
  6. data/lib/neography/rest/cypher.rb +2 -6
  7. data/lib/neography/rest/extensions.rb +4 -8
  8. data/lib/neography/rest/gremlin.rb +2 -6
  9. data/lib/neography/rest/helpers.rb +58 -0
  10. data/lib/neography/rest/node_auto_indexes.rb +54 -8
  11. data/lib/neography/rest/node_indexes.rb +92 -17
  12. data/lib/neography/rest/node_labels.rb +15 -26
  13. data/lib/neography/rest/node_paths.rb +8 -16
  14. data/lib/neography/rest/node_properties.rb +45 -4
  15. data/lib/neography/rest/node_relationships.rb +8 -17
  16. data/lib/neography/rest/node_traversal.rb +7 -63
  17. data/lib/neography/rest/nodes.rb +21 -29
  18. data/lib/neography/rest/other_node_relationships.rb +6 -13
  19. data/lib/neography/rest/relationship_auto_indexes.rb +54 -8
  20. data/lib/neography/rest/relationship_indexes.rb +104 -14
  21. data/lib/neography/rest/relationship_properties.rb +45 -4
  22. data/lib/neography/rest/relationship_types.rb +4 -11
  23. data/lib/neography/rest/relationships.rb +6 -13
  24. data/lib/neography/rest/schema_indexes.rb +8 -16
  25. data/lib/neography/rest/spatial.rb +16 -33
  26. data/lib/neography/rest/transactions.rb +25 -26
  27. data/lib/neography/tasks.rb +2 -2
  28. data/lib/neography/version.rb +1 -1
  29. data/spec/unit/rest/batch_spec.rb +49 -50
  30. data/spec/unit/rest/clean_spec.rb +3 -4
  31. data/spec/unit/rest/constraints_spec.rb +12 -13
  32. data/spec/unit/rest/cypher_spec.rb +3 -4
  33. data/spec/unit/rest/extensions_spec.rb +5 -6
  34. data/spec/unit/rest/gremlin_spec.rb +5 -6
  35. data/spec/unit/rest/helpers_spec.rb +124 -0
  36. data/spec/unit/rest/labels_spec.rb +21 -22
  37. data/spec/unit/rest/node_auto_indexes_spec.rb +23 -24
  38. data/spec/unit/rest/node_indexes_spec.rb +42 -43
  39. data/spec/unit/rest/node_paths_spec.rb +10 -13
  40. data/spec/unit/rest/node_properties_spec.rb +22 -23
  41. data/spec/unit/rest/node_relationships_spec.rb +18 -39
  42. data/spec/unit/rest/node_traversal_spec.rb +4 -97
  43. data/spec/unit/rest/nodes_spec.rb +47 -48
  44. data/spec/unit/rest/relationship_auto_indexes_spec.rb +23 -24
  45. data/spec/unit/rest/relationship_indexes_spec.rb +42 -43
  46. data/spec/unit/rest/relationship_properties_spec.rb +22 -23
  47. data/spec/unit/rest/relationship_types_spec.rb +3 -4
  48. data/spec/unit/rest/relationships_spec.rb +5 -6
  49. data/spec/unit/rest/schema_index_spec.rb +7 -8
  50. data/spec/unit/rest/transactions_spec.rb +10 -11
  51. metadata +27 -31
  52. data/lib/neography/rest/auto_indexes.rb +0 -64
  53. data/lib/neography/rest/indexes.rb +0 -102
  54. data/lib/neography/rest/paths.rb +0 -46
  55. data/lib/neography/rest/properties.rb +0 -56
  56. data/spec/unit/rest/paths_spec.rb +0 -69
@@ -1,46 +0,0 @@
1
- module Neography
2
- class Rest
3
- module Paths
4
-
5
- def add_path(key, path)
6
- method_name = :"#{key}_path"
7
-
8
- metaclass = (class << self; self; end)
9
- metaclass.instance_eval do
10
- define_method method_name do |*attributes|
11
- if attributes.any?
12
- build_path(path, *attributes)
13
- else
14
- path
15
- end
16
- end
17
- end
18
-
19
- define_method method_name do |*attributes|
20
- self.class.send(method_name, *attributes)
21
- end
22
- end
23
-
24
-
25
- def build_path(path, attributes)
26
- p = String.new(path)
27
- p.gsub!(/=:([\w_]*)/) do
28
- if $1.to_sym == :value and attributes[$1.to_sym].class == String
29
- "=%22"+encode(attributes[$1.to_sym].to_s)+"%22";
30
- else
31
- "="+encode(attributes[$1.to_sym].to_s)
32
- end
33
- end
34
-
35
- p.gsub(/:([\w_]*)/) do
36
- encode(attributes[$1.to_sym].to_s)
37
- end
38
- end
39
-
40
- def encode(value)
41
- CGI.escape(value).gsub("+", "%20")
42
- end
43
-
44
- end
45
- end
46
- end
@@ -1,56 +0,0 @@
1
- module Neography
2
- class Rest
3
- class Properties
4
- include Neography::Rest::Helpers
5
-
6
- def initialize(connection)
7
- @connection ||= connection
8
- end
9
-
10
- def set(id, properties)
11
- properties.each do |property, value|
12
- options = { :body => value.to_json, :headers => json_content_type }
13
- @connection.put(single_path(:id => get_id(id), :property => property), options)
14
- end
15
- end
16
-
17
- def reset(id, properties)
18
- options = { :body => properties.to_json, :headers => json_content_type }
19
- @connection.put(all_path(:id => get_id(id)), options)
20
- end
21
-
22
- def get(id, *properties)
23
- if properties.none?
24
- @connection.get(all_path(:id => get_id(id)))
25
- else
26
- get_each(id, *properties)
27
- end
28
- end
29
-
30
- def get_each(id, *properties)
31
- retrieved_properties = properties.flatten.inject({}) do |memo, property|
32
- value = @connection.get(single_path(:id => get_id(id), :property => property))
33
- memo[property] = value unless value.nil?
34
- memo
35
- end
36
- return nil if retrieved_properties.empty?
37
- retrieved_properties
38
- end
39
-
40
- def remove(id, *properties)
41
- if properties.none?
42
- @connection.delete(all_path(:id => get_id(id)))
43
- else
44
- remove_each(id, *properties)
45
- end
46
- end
47
-
48
- def remove_each(id, *properties)
49
- properties.flatten.each do |property|
50
- @connection.delete(single_path(:id => get_id(id), :property => property))
51
- end
52
- end
53
-
54
- end
55
- end
56
- end
@@ -1,69 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Neography
4
- class Rest
5
-
6
- class Dummy
7
- extend Paths
8
-
9
- add_path :one, "/node/:id"
10
- add_path :two, "/node/:id/properties/:property"
11
- end
12
-
13
- describe Dummy do
14
-
15
- context "instance methods" do
16
-
17
- it { should respond_to(:one_path) }
18
- it { should respond_to(:two_path) }
19
-
20
- it "replaces a key" do
21
- subject.one_path(:id => 42).should == "/node/42"
22
- end
23
-
24
- it "replaces multiple keys" do
25
- subject.two_path(:id => 42, :property => "foo").should == "/node/42/properties/foo"
26
- end
27
-
28
- it "url encodes spaces" do
29
- subject.one_path(:id => "with space").should == "/node/with%20space"
30
- end
31
-
32
- # URI.encode does not escape slashes (and rightly so), but should escape these keys
33
- it "url encodes slashes" do
34
- subject.one_path(:id => "with/slash").should == "/node/with%2Fslash"
35
- end
36
-
37
- end
38
-
39
- context "class methods" do
40
-
41
- subject { Dummy }
42
-
43
- it { should respond_to(:one_path) }
44
- it { should respond_to(:two_path) }
45
-
46
- it "replaces a key" do
47
- subject.one_path(:id => 42).should == "/node/42"
48
- end
49
-
50
- it "replaces multiple keys" do
51
- subject.two_path(:id => 42, :property => "foo").should == "/node/42/properties/foo"
52
- end
53
-
54
- it "url encodes spaces" do
55
- subject.one_path(:id => "with space").should == "/node/with%20space"
56
- end
57
-
58
- # URI.encode does not escape slashes (and rightly so), but should escape these keys
59
- it "url encodes slashes" do
60
- subject.one_path(:id => "with/slash").should == "/node/with%2Fslash"
61
- end
62
-
63
- end
64
-
65
- end
66
-
67
- end
68
- end
69
-