arangorb 1.4.1 → 2.0.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 (71) hide show
  1. checksums.yaml +4 -4
  2. data/ArangoRB.gemspec +20 -18
  3. data/Gemfile +3 -0
  4. data/README.md +1079 -908
  5. data/lib/AQL.rb +155 -0
  6. data/lib/Batch.rb +97 -0
  7. data/lib/Cache.rb +71 -0
  8. data/lib/Collection.rb +852 -0
  9. data/lib/Database.rb +417 -0
  10. data/lib/Document.rb +346 -0
  11. data/lib/Edge.rb +104 -0
  12. data/lib/Error.rb +125 -0
  13. data/lib/Foxx.rb +277 -0
  14. data/lib/Graph.rb +325 -0
  15. data/lib/Index.rb +126 -0
  16. data/lib/Replication.rb +235 -0
  17. data/lib/Request.rb +143 -0
  18. data/lib/Server.rb +466 -0
  19. data/lib/Task.rb +120 -0
  20. data/lib/Transaction.rb +115 -0
  21. data/lib/Traversal.rb +224 -0
  22. data/lib/User.rb +197 -0
  23. data/lib/Vertex.rb +127 -0
  24. data/lib/View.rb +151 -0
  25. data/lib/arangorb.rb +23 -15
  26. data/lib/helpers/Error.rb +28 -0
  27. data/lib/helpers/Return.rb +53 -0
  28. metadata +64 -45
  29. data/lib/ArangoRB_AQL.rb +0 -181
  30. data/lib/ArangoRB_Cache.rb +0 -174
  31. data/lib/ArangoRB_Col.rb +0 -526
  32. data/lib/ArangoRB_DB.rb +0 -363
  33. data/lib/ArangoRB_Doc.rb +0 -319
  34. data/lib/ArangoRB_Edg.rb +0 -184
  35. data/lib/ArangoRB_Gra.rb +0 -201
  36. data/lib/ArangoRB_Index.rb +0 -135
  37. data/lib/ArangoRB_Replication.rb +0 -261
  38. data/lib/ArangoRB_Ser.rb +0 -446
  39. data/lib/ArangoRB_Task.rb +0 -129
  40. data/lib/ArangoRB_Tra.rb +0 -169
  41. data/lib/ArangoRB_Tran.rb +0 -68
  42. data/lib/ArangoRB_User.rb +0 -157
  43. data/lib/ArangoRB_Ver.rb +0 -162
  44. data/spec/arangoRB_helper.rb +0 -4
  45. data/spec/arangoRestart_helper.rb +0 -14
  46. data/spec/arangorb-1.3.0.gem +0 -0
  47. data/spec/lib/0.1.0/arangoAQL_helper.rb +0 -64
  48. data/spec/lib/0.1.0/arangoC_helper.rb +0 -170
  49. data/spec/lib/0.1.0/arangoDB_helper.rb +0 -119
  50. data/spec/lib/0.1.0/arangoDoc_helper.rb +0 -79
  51. data/spec/lib/0.1.0/arangoE_helper.rb +0 -50
  52. data/spec/lib/0.1.0/arangoG_helper.rb +0 -78
  53. data/spec/lib/0.1.0/arangoS_helper.rb +0 -37
  54. data/spec/lib/0.1.0/arangoT_helper.rb +0 -48
  55. data/spec/lib/0.1.0/arangoV_helper.rb +0 -65
  56. data/spec/lib/1.0.0/arangoC_helper.rb +0 -73
  57. data/spec/lib/1.0.0/arangoDB_helper.rb +0 -48
  58. data/spec/lib/1.0.0/arangoI_helper.rb +0 -43
  59. data/spec/lib/1.0.0/arangoS_helper.rb +0 -192
  60. data/spec/lib/1.0.0/arangoTa_helper.rb +0 -49
  61. data/spec/lib/1.0.0/arangoTr_helper.rb +0 -15
  62. data/spec/lib/1.0.0/arangoU_helper.rb +0 -72
  63. data/spec/lib/1.1.0/arangoRB_helper.rb +0 -144
  64. data/spec/lib/1.1.0/arangoRB_walks_helper.rb +0 -19
  65. data/spec/lib/1.2.0/arangoCache_helper.rb +0 -66
  66. data/spec/lib/1.3.0/arangoHash_helper.rb +0 -30
  67. data/spec/lib/arangoRB_0.1.0_helper.rb +0 -9
  68. data/spec/lib/arangoRB_1.0.0_helper.rb +0 -6
  69. data/spec/lib/arangoRB_1.1.0_helper.rb +0 -2
  70. data/spec/lib/arangoRB_1.2.0_helper.rb +0 -2
  71. data/spec/spec_helper.rb +0 -42
data/lib/ArangoRB_Ver.rb DELETED
@@ -1,162 +0,0 @@
1
- # === GRAPH VERTEX ===
2
-
3
- # ==== DOCUMENT ====
4
-
5
- class ArangoVertex < ArangoDocument
6
- def initialize(key: nil, collection: @@collection, graph: @@graph, database: @@database, body: {}) # TESTED
7
- if collection.is_a?(String)
8
- @collection = collection
9
- elsif collection.is_a?(ArangoCollection)
10
- @collection = collection.collection
11
- else
12
- raise "collection should be a String or an ArangoCollection instance, not a #{collection.class}"
13
- end
14
-
15
- if graph.is_a?(String)
16
- @graph = graph
17
- elsif graph.is_a?(ArangoGraph)
18
- @graph = graph.graph
19
- else
20
- raise "graph should be a String or an ArangoGraph instance, not a #{graph.class}"
21
- end
22
-
23
- if database.is_a?(String)
24
- @database = database
25
- else
26
- raise "database should be a String, not a #{database.class}"
27
- end
28
-
29
- if key.is_a?(String) || key.nil?
30
- @key = key
31
- unless key.nil?
32
- body["_key"] = @key
33
- @id = "#{@collection}/#{@key}"
34
- end
35
- elsif key.is_a?(ArangoDocument)
36
- @key = key.key
37
- @id = key.id
38
- else
39
- raise "key should be a String, not a #{key.class}"
40
- end
41
-
42
- if body.is_a?(Hash)
43
- @body = body
44
- else
45
- raise "body should be a Hash, not a #{body.class}"
46
- end
47
- @idCache = "VER_#{@id}"
48
- end
49
-
50
- attr_reader :key, :id, :body, :idCache
51
-
52
- # === RETRIEVE ===
53
-
54
- def to_hash
55
- {
56
- "key" => @key,
57
- "id" => @id,
58
- "collection" => @collection,
59
- "database" => @database,
60
- "body" => @body,
61
- "idCache" => @idCache
62
- }.delete_if{|k,v| v.nil?}
63
- end
64
- alias to_h to_hash
65
-
66
- def graph
67
- ArangoGraph.new(graph: @graph, database: @database)
68
- end
69
-
70
- # === GET ===
71
-
72
- def retrieve # TESTED
73
- result = self.class.get("/_db/#{@database}/_api/gharial/#{@graph}/vertex/#{@id}", @@request)
74
- return result.headers["x-arango-async-id"] if @@async == "store"
75
- return true if @@async
76
- result = result.parsed_response
77
- if @@verbose
78
- @body = result["vertex"] unless result["error"]
79
- result
80
- else
81
- return result["errorMessage"] if result["error"]
82
- @body = result["vertex"]
83
- self
84
- end
85
- end
86
-
87
- # === POST ====
88
-
89
- def create(body: @body, waitForSync: nil) # TESTED
90
- query = {"waitForSync" => waitForSync}.delete_if{|k,v| v.nil?}
91
- body["_key"] = @key if body["_key"].nil? && !@key.nil?
92
- request = @@request.merge({ :body => body.to_json, :query => query })
93
- result = self.class.post("/_db/#{@database}/_api/gharial/#{@graph}/vertex/#{@collection}", request)
94
- return_result result: result, body: body
95
- end
96
- alias create_vertex create
97
-
98
- # === MODIFY ===
99
-
100
- def replace(body: {}, waitForSync: nil) # TESTED
101
- query = { "waitForSync" => waitForSync }.delete_if{|k,v| v.nil?}
102
- request = @@request.merge({ :body => body.to_json, :query => query })
103
- result = self.class.put("/_db/#{@database}/_api/gharial/#{@graph}/vertex/#{@id}", request)
104
- return_result result: result, body: body
105
- end
106
-
107
- def update(body: {}, waitForSync: nil, keepNull: nil) # TESTED
108
- query = {"waitForSync" => waitForSync, "keepNull" => keepNull}.delete_if{|k,v| v.nil?}
109
- request = @@request.merge({ :body => body.to_json, :query => query })
110
- result = self.class.patch("/_db/#{@database}/_api/gharial/#{@graph}/vertex/#{@id}", request)
111
- return result.headers["x-arango-async-id"] if @@async == "store"
112
- return true if @@async
113
- result = result.parsed_response
114
- if @@verbose
115
- unless result["error"]
116
- @key = result["_key"]
117
- @id = "#{@collection}/#{@key}"
118
- @body = result["vertex"].body
119
- end
120
- result
121
- else
122
- return result["errorMessage"] if result["error"]
123
- @key = result["vertex"]["_key"]
124
- @id = "#{@collection}/#{@key}"
125
- @body = @body.merge(body)
126
- @body = @body.merge(result["vertex"])
127
- self
128
- end
129
- end
130
-
131
- # === DELETE ===
132
-
133
- def destroy(waitForSync: nil) # TESTED
134
- query = { "waitForSync" => waitForSync }.delete_if{|k,v| v.nil?}
135
- request = @@request.merge({ :query => query })
136
- result = self.class.delete("/_db/#{@database}/_api/gharial/#{@graph}/vertex/#{@id}", request)
137
- return_result result: result, caseTrue: true
138
- end
139
-
140
- # === UTILITY ===
141
-
142
- def return_result(result:, body: {}, caseTrue: false)
143
- return result.headers["x-arango-async-id"] if @@async == "store"
144
- return true if @@async
145
- result = result.parsed_response
146
- if @@verbose
147
- unless result["error"]
148
- @key = result["vertex"]["_key"]
149
- @id = "#{@collection}/#{@key}"
150
- @body = result["vertex"].merge(body)
151
- end
152
- result
153
- else
154
- return result["errorMessage"] if result["error"]
155
- return true if caseTrue
156
- @key = result["vertex"]["_key"]
157
- @id = "#{@collection}/#{@key}"
158
- @body = result["vertex"].merge(body)
159
- self
160
- end
161
- end
162
- end
@@ -1,4 +0,0 @@
1
- require "lib/arangoRB_0.1.0_helper"
2
- require "lib/arangoRB_1.0.0_helper"
3
- require "lib/arangoRB_1.1.0_helper"
4
- require "lib/arangoRB_1.2.0_helper"
@@ -1,14 +0,0 @@
1
- require "rspec"
2
- require_relative File.expand_path('../../lib/arangorb', __FILE__)
3
-
4
- RSpec.configure do |config|
5
- config.color = true
6
- end
7
-
8
- describe ArangoServer do
9
- context "#restart" do
10
- it "restart" do
11
- print ArangoServer.restart
12
- end
13
- end
14
- end
Binary file
@@ -1,64 +0,0 @@
1
- require_relative './../../spec_helper'
2
-
3
- describe ArangoAQL do
4
- context "#new" do
5
- it "create a new AQL instance" do
6
- myAQL = ArangoAQL.new query: "FOR u IN MyCollection RETURN u.num"
7
- expect(myAQL.query).to eq "FOR u IN MyCollection RETURN u.num"
8
- end
9
-
10
- it "instantiate size" do
11
- @myAQL.size = 5
12
- expect(@myAQL.size).to eq 5
13
- end
14
- end
15
-
16
- context "#execute" do
17
- it "execute Transaction" do
18
- @myAQL.execute
19
- expect(@myAQL.result.length).to eq 5
20
- end
21
-
22
- it "execute again Transaction" do
23
- @myAQL.next
24
- expect(@myAQL.result.length).to eq 5
25
- end
26
- end
27
-
28
- context "#info" do
29
- it "explain" do
30
- expect(@myAQL.explain["cacheable"]).to be true
31
- end
32
-
33
- it "parse" do
34
- expect(@myAQL.parse["parsed"]).to be true
35
- end
36
-
37
- it "properties" do
38
- expect(@myAQL.properties["enabled"]).to be true
39
- end
40
-
41
- it "current" do
42
- expect(@myAQL.current).to eq []
43
- end
44
-
45
- it "slow" do
46
- expect(@myAQL.slow).to eq []
47
- end
48
- end
49
-
50
- context "#delete" do
51
- it "stopSlow" do
52
- expect(@myAQL.stopSlow).to be true
53
- end
54
-
55
- it "kill" do
56
- expect(@myAQL.kill.class).to be String
57
- end
58
-
59
- it "changeProperties" do
60
- result = @myAQL.changeProperties maxSlowQueries: 65
61
- expect(result["maxSlowQueries"]).to eq 65
62
- end
63
- end
64
- end
@@ -1,170 +0,0 @@
1
- require_relative './../../spec_helper'
2
-
3
- describe ArangoCollection do
4
- context "#new" do
5
- it "create a new instance without global" do
6
- myCollection = ArangoCollection.new collection: "MyCollection"
7
- expect(myCollection.collection).to eq "MyCollection"
8
- end
9
-
10
- it "create a new instance with global" do
11
- myCollection = ArangoCollection.new
12
- expect(myCollection.collection).to eq "MyCollection"
13
- end
14
-
15
- it "create a new instance with type Edge" do
16
- myCollection = ArangoCollection.new collection: "MyCollection", type: "Edge"
17
- expect(myCollection.type).to eq "Edge"
18
- end
19
- end
20
-
21
- context "#create" do
22
- it "create a new Collection" do
23
- @myCollection.destroy
24
- myCollection = @myCollection.create
25
- expect(myCollection.collection).to eq "MyCollection"
26
- end
27
-
28
- it "create a duplicate Collection" do
29
- myCollection = @myCollection.create
30
- expect(myCollection).to eq "duplicate name: duplicate name"
31
- end
32
-
33
- it "create a new Edge Collection" do
34
- @myEdgeCollection.destroy
35
- myCollection = @myEdgeCollection.create_edge_collection
36
- expect(myCollection.type).to eq "Edge"
37
- end
38
-
39
- it "create a new Document in the Collection" do
40
- myDocument = @myCollection.create_document document: {"Hello" => "World", "num" => 1}
41
- expect(myDocument.body["Hello"]).to eq "World"
42
- end
43
-
44
- it "create new Documents in the Collection" do
45
- myDocument = @myCollection.create_document document: [{"Ciao" => "Mondo", "num" => 1}, {"Hallo" => "Welt", "num" => 2}]
46
- expect(myDocument[0].body["Ciao"]).to eq "Mondo"
47
- end
48
-
49
- it "create a new Edge in the Collection" do
50
- myDoc = @myCollection.create_document document: [{"A" => "B", "num" => 1}, {"C" => "D", "num" => 3}]
51
- myEdge = @myEdgeCollection.create_edge from: myDoc[0].id, to: myDoc[1].id
52
- expect(myEdge.body["_from"]).to eq myDoc[0].id
53
- end
54
- end
55
-
56
- context "#info" do
57
- it "retrieve the Collection" do
58
- info = @myCollection.retrieve
59
- expect(info.collection).to eq "MyCollection"
60
- end
61
-
62
- it "properties of the Collection" do
63
- info = @myCollection.properties
64
- expect(info["name"]).to eq "MyCollection"
65
- end
66
-
67
- it "documents in the Collection" do
68
- info = @myCollection.count
69
- expect(info).to eq 5
70
- end
71
-
72
- it "statistics" do
73
- info = @myCollection.statistics
74
- expect(info["lastTick"]).to eq 0
75
- end
76
-
77
- it "checksum" do
78
- info = @myCollection.checksum
79
- expect(info.class).to eq String
80
- end
81
-
82
- it "list Documents" do
83
- info = @myCollection.allDocuments
84
- expect(info.length).to eq 5
85
- end
86
-
87
- it "search Documents by match" do
88
- info = @myCollection.documentsMatch match: {"num" => 1}
89
- expect(info.length).to eq 3
90
- end
91
-
92
- it "search Document by match" do
93
- info = @myCollection.documentMatch match: {"num" => 1}
94
- expect(info.collection.name).to eq "MyCollection"
95
- end
96
-
97
- it "search Document by key match" do
98
- docs = @myCollection.create_document document: [{"_key" => "ThisIsATest1", "test" => "fantastic"}, {"_key" => "ThisIsATest2"}]
99
- result = @myCollection.documentByKeys keys: ["ThisIsATest1", docs[1]]
100
- expect(result[0].body["test"]).to eq "fantastic"
101
- end
102
-
103
- it "remove Document by key match" do
104
- docs = @myCollection.create_document document: [{"_key" => "ThisIsATest3", "test" => "fantastic"}, {"_key" => "ThisIsATest4"}]
105
- result = @myCollection.removeByKeys keys: ["ThisIsATest3", docs[1]]
106
- expect(result).to eq 2
107
- end
108
-
109
- it "remove Document by match" do
110
- @myCollection.create_document document: [{"_key" => "ThisIsATest5", "test" => "fantastic"}, {"_key" => "ThisIsATest6"}]
111
- result = @myCollection.removeMatch match: {"test" => "fantastic"}
112
- expect(result).to eq 2
113
- end
114
-
115
- it "replace Document by match" do
116
- @myCollection.create_document document: {"test" => "fantastic", "val" => 4}
117
- result = @myCollection.replaceMatch match: {"test" => "fantastic"}, newValue: {"val" => 5}
118
- expect(result).to eq 1
119
- end
120
-
121
- it "update Document by match" do
122
- @myCollection.create_document document: {"test" => "fantastic2", "val" => 5}
123
- result = @myCollection.updateMatch match: {"val" => 5}, newValue: {"val" => 6}
124
- expect(result).to eq 2
125
- end
126
-
127
- it "search random Document" do
128
- info = @myCollection.random
129
- expect(info.collection.name).to eq "MyCollection"
130
- end
131
-
132
-
133
- end
134
-
135
- context "#modify" do
136
- it "load" do
137
- myCollection = @myCollection.load
138
- expect(myCollection.collection).to eq "MyCollection"
139
- end
140
-
141
- it "unload" do
142
- myCollection = @myCollection.unload
143
- expect(myCollection.collection).to eq "MyCollection"
144
- end
145
-
146
- it "change" do
147
- myCollection = @myCollection.change waitForSync: true
148
- expect(myCollection.body["waitForSync"]).to be true
149
- end
150
-
151
- it "rename" do
152
- myCollection = @myCollection.rename "MyCollection2"
153
- expect(myCollection.collection).to eq "MyCollection2"
154
- end
155
- end
156
-
157
- context "#truncate" do
158
- it "truncate a Collection" do
159
- myCollection = @myCollection.truncate
160
- expect(myCollection.count).to eq 0
161
- end
162
- end
163
-
164
- context "#destroy" do
165
- it "delete a Collection" do
166
- myCollection = @myCollection.destroy
167
- expect(myCollection).to be true
168
- end
169
- end
170
- end
@@ -1,119 +0,0 @@
1
- require_relative './../../spec_helper'
2
-
3
- describe ArangoDatabase do
4
-
5
- context "#new" do
6
- it "create a new instance without global" do
7
- myDatabase = ArangoDatabase.new database: "MyDatabase"
8
- expect(myDatabase.database).to eq "MyDatabase"
9
- end
10
-
11
- it "create a new instance with global" do
12
- myDatabase = ArangoDatabase.new
13
- expect(myDatabase.database).to eq "MyDatabase"
14
- end
15
- end
16
-
17
- context "#create" do
18
- it "create a new Database" do
19
- @myDatabase.destroy
20
- myDatabase = @myDatabase.create
21
- expect(myDatabase.database).to eq "MyDatabase"
22
- end
23
-
24
- it "create a duplicate Database" do
25
- myDatabase = @myDatabase.create
26
- expect(myDatabase).to eq "duplicate name"
27
- end
28
- end
29
-
30
- context "#info" do
31
- it "obtain general info" do
32
- info = @myDatabase.info
33
- expect(info["name"]).to eq "MyDatabase"
34
- end
35
-
36
- it "list databases" do
37
- list = ArangoDatabase.databases
38
- expect(list.length).to be >= 1
39
- end
40
-
41
- it "list collections" do
42
- list = @myDatabase.collections
43
- expect(list.length).to be 0
44
- end
45
-
46
- it "list graphs" do
47
- list = @myDatabase.graphs
48
- expect(list.length).to be 0
49
- end
50
- end
51
-
52
- context "#query" do
53
- it "properties" do
54
- expect(@myDatabase.propertiesQuery["enabled"]).to be true
55
- end
56
-
57
- it "current" do
58
- expect(@myDatabase.currentQuery).to eq []
59
- end
60
-
61
- it "slow" do
62
- expect(@myDatabase.slowQuery).to eq []
63
- end
64
- end
65
-
66
- context "#delete query" do
67
- it "stopSlow" do
68
- expect(@myDatabase.stopSlowQuery).to be true
69
- end
70
-
71
- it "kill" do
72
- @myCollection = ArangoCollection.new.create
73
- @myCollection.create_document document: [{"num" => 1, "_key" => "FirstKey"}, {"num" => 1}, {"num" => 1}, {"num" => 1}, {"num" => 1}, {"num" => 1}, {"num" => 1}, {"num" => 2}, {"num" => 2}, {"num" => 2}, {"num" => 3}, {"num" => 2}, {"num" => 5}, {"num" => 2}]
74
- @myAQL.size = 3
75
- @myAQL.execute
76
- expect((@myDatabase.killQuery query: @myAQL).split(" ")[0]).to eq "cannot"
77
- end
78
-
79
- it "changeProperties" do
80
- result = @myDatabase.changePropertiesQuery maxSlowQueries: 65
81
- expect(result["maxSlowQueries"]).to eq 65
82
- end
83
- end
84
-
85
- context "#cache" do
86
- it "clear" do
87
- expect(@myDatabase.clearCache).to be true
88
- end
89
-
90
- it "change Property Cache" do
91
- @myDatabase.changePropertyCache maxResults: 130
92
- expect(@myDatabase.propertyCache["maxResults"]).to eq 130
93
- end
94
- end
95
-
96
- context "#function" do
97
- it "create Function" do
98
- result = @myDatabase.createFunction name: "myfunctions::temperature::celsiustofahrenheit", code: "function (celsius) { return celsius * 1.8 + 32; }"
99
- expect(result.class).to eq Hash
100
- end
101
-
102
- it "list Functions" do
103
- result = @myDatabase.functions
104
- expect(result[0]["name"]).to eq "myfunctions::temperature::celsiustofahrenheit"
105
- end
106
-
107
- it "delete Function" do
108
- result = @myDatabase.deleteFunction name: "myfunctions::temperature::celsiustofahrenheit"
109
- expect(result).to be true
110
- end
111
- end
112
-
113
- context "#destroy" do
114
- it "delete a Database" do
115
- myDatabase = @myDatabase.destroy
116
- expect(myDatabase).to be true
117
- end
118
- end
119
- end