arangorb 1.0.0 → 1.1.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.
@@ -41,31 +41,31 @@ class ArangoIndex < ArangoServer
41
41
  end
42
42
  end
43
43
 
44
- attr_reader :database, :collection, :body, :type, :id, :unique, :fields, :key, :sparse
44
+ attr_reader :body, :type, :id, :unique, :fields, :key, :sparse
45
+
46
+ ### RETRIEVE ###
47
+
48
+ def database
49
+ ArangoDatabase.new(database: @database)
50
+ end
51
+
52
+ def collection
53
+ ArangoCollection.new(collection: @collection, database: @database)
54
+ end
45
55
 
46
56
  def retrieve # TESTED
47
57
  result = self.class.get("/_db/#{@database}/_api/index/#{@id}", @@request)
48
- if @@async == "store"
49
- result.headers["x-arango-async-id"]
50
- else
51
- result = result.parsed_response
52
- if @@verbose
53
- result
54
- else
55
- if result["error"]
56
- result["errorMessage"]
57
- else
58
- result.delete("error")
59
- result.delete("code")
60
- @body = result
61
- @type = result["type"]
62
- @unique = result["unique"]
63
- @fields = result["fields"]
64
- @sparse = result["sparse"]
65
- self
66
- end
67
- end
68
- end
58
+ return result.headers["x-arango-async-id"] if @@async == "store"
59
+ result = result.parsed_response
60
+ return result if @@verbose
61
+ return result["errorMessage"] if result["error"]
62
+ result.delete_if{|k,v| k == "error" || k == "code"}
63
+ @body = result
64
+ @type = result["type"]
65
+ @unique = result["unique"]
66
+ @fields = result["fields"]
67
+ @sparse = result["sparse"]
68
+ self
69
69
  end
70
70
 
71
71
  def self.indexes(database: @@database, collection: @@collection) # TESTED
@@ -74,23 +74,13 @@ class ArangoIndex < ArangoServer
74
74
  query = { "collection": collection }
75
75
  request = @@request.merge({ :query => query })
76
76
  result = get("/_db/#{database}/_api/index", request)
77
- if @@async == "store"
78
- result.headers["x-arango-async-id"]
79
- else
80
- result = result.parsed_response
81
- if @@verbose
82
- result
83
- else
84
- if result["error"]
85
- result["errorMessage"]
86
- else
87
- result.delete("error")
88
- result.delete("code")
89
- result["indexes"] = result["indexes"].map{|x| ArangoIndex.new(body: x, id: x["id"], database: database, collection: collection, type: x["type"], unique: x["unique"], fields: x["fields"], sparse: x["sparse"])}
90
- result
91
- end
92
- end
93
- end
77
+ return result.headers["x-arango-async-id"] if @@async == "store"
78
+ result = result.parsed_response
79
+ return result if @@verbose
80
+ return result["errorMessage"] if result["error"]
81
+ result.delete_if{|k,v| k == "error" || k == "code"}
82
+ result["indexes"] = result["indexes"].map{|x| ArangoIndex.new(body: x, id: x["id"], database: database, collection: collection, type: x["type"], unique: x["unique"], fields: x["fields"], sparse: x["sparse"])}
83
+ result
94
84
  end
95
85
 
96
86
  def create # TESTED
@@ -103,42 +93,21 @@ class ArangoIndex < ArangoServer
103
93
  query = { "collection": @collection }
104
94
  request = @@request.merge({ :body => body.to_json, :query => query })
105
95
  result = self.class.post("/_db/#{@database}/_api/index", request)
106
- if @@async == "store"
107
- result.headers["x-arango-async-id"]
108
- else
109
- result = result.parsed_response
110
- if @@verbose
111
- result
112
- else
113
- if result["error"]
114
- result["errorMessage"]
115
- else
116
- result.delete("error")
117
- result.delete("code")
118
- @body = result
119
- @id = result["id"]
120
- @key = @id.split("/")[1]
121
- self
122
- end
123
- end
124
- end
96
+ return result.headers["x-arango-async-id"] if @@async == "store"
97
+ result = result.parsed_response
98
+ return result if @@verbose
99
+ return result["errorMessage"] if result["error"]
100
+ result.delete_if{|k,v| k == "error" || k == "code"}
101
+ @body = result
102
+ @id = result["id"]
103
+ @key = @id.split("/")[1]
104
+ self
125
105
  end
126
106
 
127
107
  def destroy # TESTED
128
108
  result = self.class.delete("/_db/#{@database}/_api/index/#{id}", @@request)
129
- if @@async == "store"
130
- result.headers["x-arango-async-id"]
131
- else
132
- result = result.parsed_response
133
- if @@verbose
134
- result
135
- else
136
- if result["error"]
137
- result["errorMessage"]
138
- else
139
- true
140
- end
141
- end
142
- end
109
+ return result.headers["x-arango-async-id"] if @@async == "store"
110
+ result = result.parsed_response
111
+ @@verbose ? result : result["error"] ? result["errorMessage"] : true
143
112
  end
144
113
  end
data/lib/ArangoRB_Ser.rb CHANGED
@@ -64,10 +64,11 @@ class ArangoServer
64
64
  else
65
65
  raise "database should be a String or an ArangoDatabase instance, not a #{database.class}"
66
66
  end
67
+ ArangoDatabase.new(database: @@database)
67
68
  end
68
69
 
69
70
  def self.database # TESTED
70
- @@database
71
+ ArangoDatabase.new(database: @@database)
71
72
  end
72
73
 
73
74
  def self.graph=(graph) # TESTED
@@ -78,10 +79,11 @@ class ArangoServer
78
79
  else
79
80
  raise "graph should be a String or an ArangoGraph instance, not a #{graph.class}"
80
81
  end
82
+ ArangoGraph.new(database: @@database, graph: @@graph)
81
83
  end
82
84
 
83
85
  def self.graph # TESTED
84
- @@graph
86
+ ArangoGraph.new(database: @@database, graph: @@graph)
85
87
  end
86
88
 
87
89
  def self.collection=(collection) # TESTED
@@ -92,10 +94,11 @@ class ArangoServer
92
94
  else
93
95
  raise "graph should be a String or an ArangoCollection instance, not a #{collection.class}"
94
96
  end
97
+ ArangoCollection.new(database: @@database, collection: @@collection)
95
98
  end
96
99
 
97
100
  def self.collection # TESTED
98
- @@collection
101
+ ArangoCollection.new(database: @@database, collection: @@collection)
99
102
  end
100
103
 
101
104
  def self.user=(user)
@@ -106,10 +109,11 @@ class ArangoServer
106
109
  else
107
110
  raise "graph should be a String or an ArangoUser instance, not a #{user.class}"
108
111
  end
112
+ ArangoUser.new(user: @@user)
109
113
  end
110
114
 
111
115
  def self.user # TESTED
112
- @@user
116
+ ArangoUser.new(user: @@user)
113
117
  end
114
118
 
115
119
  def self.request # TESTED
@@ -171,20 +175,9 @@ class ArangoServer
171
175
 
172
176
  def self.users # TESTED
173
177
  result = get("/_api/user", @@request)
174
- if @@async == "store"
175
- result.headers["x-arango-async-id"]
176
- else
177
- result = result.parsed_response
178
- if @@verbose
179
- return result
180
- else
181
- if result["error"]
182
- return result["errorMessage"]
183
- else
184
- return result["result"].map{|x| ArangoUser.new(user: x["user"], active: x["active"], extra: x["extra"])}
185
- end
186
- end
187
- end
178
+ return result.headers["x-arango-async-id"] if @@async == "store"
179
+ result = result.parsed_response
180
+ @@verbose ? result : result["error"] ? result["errorMessage"] : result["result"].map{|x| ArangoUser.new(user: x["user"], active: x["active"], extra: x["extra"])}
188
181
  end
189
182
 
190
183
  def self.databases(user: nil) # TESTED
@@ -194,20 +187,9 @@ class ArangoServer
194
187
 
195
188
  def self.tasks # TESTED
196
189
  result = get("/_api/tasks", @@request)
197
- if @@async == "store"
198
- result.headers["x-arango-async-id"]
199
- else
200
- result = result.parsed_response
201
- if @@verbose
202
- result
203
- else
204
- if result.is_a?(Hash) && result["error"]
205
- result["errorMessage"]
206
- else
207
- result.map{|x| ArangoTask.new(id: x["id"], name: x["name"], type: x["type"], period: x["period"], created: x["created"], command: x["command"], database: x["database"])}
208
- end
209
- end
210
- end
190
+ return result.headers["x-arango-async-id"] if @@async == "store"
191
+ result = result.parsed_response
192
+ @@verbose ? result : (result.is_a?(Hash) && result["error"]) ? result["errorMessage"] : result.map{|x| ArangoTask.new(id: x["id"], name: x["name"], type: x["type"], period: x["period"], created: x["created"], command: x["command"], database: x["database"])}
211
193
  end
212
194
 
213
195
  # === ASYNC ===
@@ -444,42 +426,16 @@ class ArangoServer
444
426
  # === UTILITY ===
445
427
 
446
428
  def self.return_result(result:, caseTrue: false, key: nil)
447
- if @@async == "store"
448
- result.headers["x-arango-async-id"]
449
- else
450
- result = result.parsed_response
451
- if @@verbose || !result.is_a?(Hash)
452
- result
453
- else
454
- if result["error"]
455
- result["errorMessage"]
456
- else
457
- if caseTrue
458
- true
459
- elsif key.nil?
460
- result.delete_if{|k,v| k == "error" || k == "code"}
461
- else
462
- result[key]
463
- end
464
- end
465
- end
466
- end
429
+ return result.headers["x-arango-async-id"] if @@async == "store"
430
+ result = result.parsed_response
431
+ return result if @@verbose || !result.is_a?(Hash)
432
+ return result["errorMessage"] if result["error"]
433
+ return true if caseTrue
434
+ return key.nil? ? result.delete_if{|k,v| k == "error" || k == "code"} : result[key]
467
435
  end
468
436
 
469
437
  def self.return_result_async(result:, caseTrue: false)
470
438
  result = result.parsed_response
471
- if @@verbose || !result.is_a?(Hash)
472
- result
473
- else
474
- if result["error"]
475
- result["errorMessage"]
476
- else
477
- if caseTrue
478
- true
479
- else
480
- result.delete_if{|k,v| k == "error" || k == "code"}
481
- end
482
- end
483
- end
439
+ (@@verbose || !result.is_a?(Hash)) ? result : result["error"] ? result["errorMessage"] : caseTrue ? true : result.delete_if{|k,v| k == "error" || k == "code"}
484
440
  end
485
441
  end
data/lib/ArangoRB_Task.rb CHANGED
@@ -18,7 +18,11 @@ class ArangoTask < ArangoServer
18
18
  @created = created
19
19
  end
20
20
 
21
- attr_reader :id, :name, :type, :period, :created, :command, :database, :params
21
+ attr_reader :id, :name, :type, :period, :created, :command, :params
22
+
23
+ def database
24
+ ArangoDatabase.new(database: @database)
25
+ end
22
26
 
23
27
  def retrieve # TESTED
24
28
  result = self.class.get("/_db/#{@database}/_api/tasks/#{@id}")
@@ -54,20 +58,9 @@ class ArangoTask < ArangoServer
54
58
 
55
59
  def self.tasks # TESTED
56
60
  result = get("/_db/#{@@database}/_api/tasks", @@request)
57
- if @@async == "store"
58
- result.headers["x-arango-async-id"]
59
- else
60
- result = result.parsed_response
61
- if @@verbose
62
- result
63
- else
64
- if result.is_a?(Hash) && result["error"]
65
- result["errorMessage"]
66
- else
67
- result.map{|x| ArangoTask.new(id: x["id"], name: x["name"], type: x["type"], period: x["period"], created: x["created"], command: x["command"], database: x["database"])}
68
- end
69
- end
70
- end
61
+ return result.headers["x-arango-async-id"] if @@async == "store"
62
+ result = result.parsed_response
63
+ @@verbose ? result : (result.is_a?(Hash) && result["error"]) ? result["errorMessage"] : result.map{|x| ArangoTask.new(id: x["id"], name: x["name"], type: x["type"], period: x["period"], created: x["created"], command: x["command"], database: x["database"])}
71
64
  end
72
65
 
73
66
  def create offset: nil # TESTED
@@ -84,53 +77,36 @@ class ArangoTask < ArangoServer
84
77
  else
85
78
  result = self.class.put("/_db/#{@database}/_api/tasks/#{@id}", request)
86
79
  end
87
- if @@async == "store"
88
- result.headers["x-arango-async-id"]
89
- else
90
- result = result.parsed_response
91
- if @@verbose
92
- unless result.is_a?(Hash) && result["error"]
93
- @id = result["id"]
94
- @name = result["name"]
95
- @type = result["type"]
96
- @period = result["period"]
97
- @created = result["created"]
98
- @command = result["command"]
99
- @database = result["database"]
100
- end
101
- result
102
- else
103
- if result.is_a?(Hash) && result["error"]
104
- result["errorMessage"]
105
- else
106
- @id = result["id"]
107
- @name = result["name"]
108
- @type = result["type"]
109
- @period = result["period"]
110
- @created = result["created"]
111
- @command = result["command"]
112
- @database = result["database"]
113
- self
114
- end
80
+ return result.headers["x-arango-async-id"] if @@async == "store"
81
+ result = result.parsed_response
82
+ if @@verbose
83
+ unless result.is_a?(Hash) && result["error"]
84
+ @id = result["id"]
85
+ @name = result["name"]
86
+ @type = result["type"]
87
+ @period = result["period"]
88
+ @created = result["created"]
89
+ @command = result["command"]
90
+ @database = result["database"]
115
91
  end
92
+ result
93
+ else
94
+ return result["errorMessage"] if result.is_a?(Hash) && result["error"]
95
+ @id = result["id"]
96
+ @name = result["name"]
97
+ @type = result["type"]
98
+ @period = result["period"]
99
+ @created = result["created"]
100
+ @command = result["command"]
101
+ @database = result["database"]
102
+ self
116
103
  end
117
104
  end
118
105
 
119
106
  def destroy # TESTED
120
107
  result = self.class.delete("/_db/#{@database}/_api/tasks/#{@id}", @@request)
121
- if @@async == "store"
122
- result.headers["x-arango-async-id"]
123
- else
124
- result = result.parsed_response
125
- if @@verbose
126
- result
127
- else
128
- if result.is_a?(Hash) && result["error"]
129
- result["errorMessage"]
130
- else
131
- true
132
- end
133
- end
134
- end
108
+ return result.headers["x-arango-async-id"] if @@async == "store"
109
+ result = result.parsed_response
110
+ @@verbose ? result : (result.is_a?(Hash) && result["error"]) ? result["errorMessage"] : true
135
111
  end
136
112
  end
data/lib/ArangoRB_Tra.rb CHANGED
@@ -23,8 +23,26 @@ class ArangoTraversal < ArangoServer
23
23
  @paths = nil
24
24
  end
25
25
 
26
- attr_accessor :sort, :direction, :maxDepth, :minDepth, :visitor, :itemOrder, :strategy, :filter, :init, :maxiterations, :uniqueness, :order, :expander, :vertices, :paths, :database
27
- attr_reader :startVertex, :graphName, :edgeCollection
26
+ attr_accessor :sort, :direction, :maxDepth, :minDepth, :visitor, :itemOrder, :strategy, :filter, :init, :maxiterations, :uniqueness, :order, :expander, :vertices, :paths
27
+
28
+ ### RETRIEVE ###
29
+
30
+ def startVertex
31
+ val = @startVertex.split("/")
32
+ ArangoDocument.new(database: @database, collection: val[0], key: val[1])
33
+ end
34
+
35
+ def edgeCollection
36
+ ArangoCollection.new(collection: @edgeCollection, database: @database)
37
+ end
38
+
39
+ def database
40
+ ArangoDatabase.new(database: @database)
41
+ end
42
+
43
+ def graphName
44
+ ArangoGraph.new(graph: @graphName, database: @database).retrieve
45
+ end
28
46
 
29
47
  def startVertex=(startVertex) # TESTED
30
48
  if startVertex.is_a?(String)
@@ -100,38 +118,16 @@ class ArangoTraversal < ArangoServer
100
118
  }.delete_if{|k,v| v.nil?}
101
119
  request = @@request.merge({ :body => body.to_json })
102
120
  result = self.class.post("/_db/#{@database}/_api/traversal", request)
103
- if @@async == "store"
104
- result.headers["x-arango-async-id"]
105
- else
106
- result = result.parsed_response
107
- if result["error"]
108
- return @@verbose ? result : result["errorMessage"]
109
- else
110
- @vertices = result["result"]["visited"]["vertices"].map{|x| ArangoDocument.new(
111
- key: x["_key"],
112
- collection: x["_id"].split("/")[0],
113
- database: @database,
114
- body: x
115
- )}
116
- @paths = result["result"]["visited"]["paths"].map{|x|
117
- { "edges" => x["edges"].map{|e| ArangoDocument.new(
118
- key: e["_key"],
119
- collection: e["_id"].split("/")[0],
120
- database: @database,
121
- body: e,
122
- from: e["_from"],
123
- to: e["_to"]
124
- )},
125
- "vertices" => x["vertices"].map{|v| ArangoDocument.new(
126
- key: v["_key"],
127
- collection: v["_id"].split("/")[0],
128
- database: @database,
129
- body: v
130
- )}
131
- }
132
- }
133
- return @@verbose ? result : self
134
- end
135
- end
121
+ return result.headers["x-arango-async-id"] if @@async == "store"
122
+ result = result.parsed_response
123
+ return @@verbose ? result : result["errorMessage"] if result["error"]
124
+ @vertices = result["result"]["visited"]["vertices"].map{|x| ArangoDocument.new(key: x["_key"], collection: x["_id"].split("/")[0], database: @database, body: x)}
125
+ @paths = result["result"]["visited"]["paths"].map{|x|
126
+ {
127
+ "edges" => x["edges"].map{|e| ArangoDocument.new(key: e["_key"], collection: e["_id"].split("/")[0], database: @database, body: e, from: e["_from"], to: e["_to"] )},
128
+ "vertices" => x["vertices"].map{|v| ArangoDocument.new(key: v["_key"], collection: v["_id"].split("/")[0], database: @database, body: v )}
129
+ }
130
+ }
131
+ @@verbose ? result : self
136
132
  end
137
133
  end