arangorb 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5e4afa02169c622aabeddb5937c631d1969fbdb5
4
- data.tar.gz: 4aac3c7e39a0e13c73367f2b872af09026f0cb58
3
+ metadata.gz: db23869df50a9624a7f54598b85fdc08b776fb6c
4
+ data.tar.gz: e4cd9e680e9f71b40357b7d4bc08f3f397f63982
5
5
  SHA512:
6
- metadata.gz: 2c11fa83fb5c69e69da67326e45e0d8ea1ab834f001ece451a6f55595d8530dc3506f3bd94eab2869c74d259ffffd11bcbe44efff69f97cde37339be13e47c28
7
- data.tar.gz: 1c0548a71d075cfa37ba3504f34841cbce286cbb9ee7a048620e6efd24dd06a789b7a1ba8c323882cedf416e4c3db123ef1a029f4171c1a65c19b515341bc0ce
6
+ metadata.gz: 4149062e4f5b9a3883769c54b2ba889b672477773ef60fd9364a72648519054aa79ae28ef8ba8a76597a374a07de434175f669084e5d6d68bc56aa091e60ae61
7
+ data.tar.gz: a2ae7171adcb75443f86d4522940615d3220dd50f08e672b1e5699fe0a700651cf712073ca5a7ac0a7b71fb5a20cd90c4e3c264820edc4aa4a0b3beace5dd25f
data/ArangoRB.gemspec CHANGED
@@ -4,7 +4,7 @@ require "rake"
4
4
 
5
5
  Gem::Specification.new do |s|
6
6
  s.name = 'arangorb'
7
- s.version = '1.0.0'
7
+ s.version = '1.1.0'
8
8
  s.authors = ['Stefano Martin']
9
9
  s.email = ['stefano@seluxit.com']
10
10
  s.homepage = 'https://github.com/StefanoMartin/ArangoRB'
data/README.md CHANGED
@@ -236,6 +236,15 @@ myDatabase.graphs # Obtain an Array with the available graphs in the selected D
236
236
  myDatabase.functions # Obtain an Array with the available functions in the selected Database
237
237
  ```
238
238
 
239
+ It is possible to access its Collections and Graphs by their ids.
240
+
241
+ ``` ruby
242
+ myDatabase["MyCollection"] # where "MyCollection" is the id of the collection
243
+ myDatabase.collection("MyCollection")
244
+ myDatabase.graph("MyGraph")
245
+ ```
246
+
247
+
239
248
  ### Query
240
249
 
241
250
  ArangoDatabase instances can manage the queries used in their Database.
@@ -337,6 +346,16 @@ Truncate will delete all the Documents inside the selected Collection.
337
346
 
338
347
  ### Retrieve information
339
348
 
349
+ It is possible to access its Documents and its database.
350
+
351
+ ``` ruby
352
+ myCollection["MyDocument"]
353
+ myDatabase.document("MyDocument")
354
+ myDatabase.database
355
+ ```
356
+
357
+ For other information
358
+
340
359
  ``` ruby
341
360
  myCollection.retrieve # Retrieve the selected Collection
342
361
  myCollection.indexes # Return a list of all used Indexes in the Collection
@@ -348,7 +367,7 @@ myCollection.revision # Return collection revision id
348
367
  myCollection.checksum # Return checksum for the Collection
349
368
  ```
350
369
 
351
- To retrieve the documents of a Collection you can use:
370
+ To retrieve all the documents of a Collection you can use:
352
371
 
353
372
  ``` ruby
354
373
  myCollection.documents
@@ -544,6 +563,8 @@ myDocument.destroy
544
563
 
545
564
  ``` ruby
546
565
  myDocument.retrieve # Retrieve Document
566
+ myDocument.collection # Retrieve Collection of the Document
567
+ myDocument.database # Retrieve Database of the Document
547
568
  myDocument.retrieve_edges collection: myEdgeCollection # Retrieve all myEdgeCollection edges connected with the Document
548
569
  myDocument.any(myEdgeCollection) # Retrieve all myEdgeCollection edges connected with the Document
549
570
  myDocument.in(myEdgeCollection) # Retrieve all myEdgeCollection edges coming in the Document
@@ -601,6 +622,7 @@ myGraph = ArangoGraph.new # By using the defauly Database and Graph
601
622
  ``` ruby
602
623
  myGraph.create # create a new Graph
603
624
  myGraph.retrieve # retrieve the Graph
625
+ myGraph.database # retrieve database of the Graph
604
626
  myGraph.destroy # destroy the Graph
605
627
  ```
606
628
 
@@ -636,6 +658,7 @@ To use ArangoVertex, the Collection of the Vertex needs to be added either to th
636
658
  myVertex = ArangoVertex.new key: "newVertex", body: {"value" => 3}, collection: "myCollection", graph: "myGraph", database: "myDatabase" # create a new instance
637
659
  myVertex.create # create a new Document in the Graph
638
660
  myVertex.retrieve # retrieve a Document
661
+ myVertex.graph # Retrieve Graph of the Document
639
662
  myVertex.replace body: {"value" => 6} # replace the Document
640
663
  myVertex.update body: {"value" => 6} # update the Document
641
664
  myVertex.destroy # delete the Document
@@ -650,6 +673,7 @@ To use ArangoEdge, the Collection of the Edge needs to be added to the EdgeColle
650
673
  myEdge = ArangoEdge.new key: "newVertex", body: {"value" => 3}, from: myArangoDocument, to: myArangoDocument, collection: "myCollection", graph: "myGraph", database: "myDatabase" # create a new instance
651
674
  myEdge.create # create a new Document of type Edge in the Graph
652
675
  myEdge.retrieve # retrieve a Document
676
+ myEdge.graph # Retrieve Graph of the Document
653
677
  myEdge.replace body: {"value" => 6} # replace the Document
654
678
  myEdge.update body: {"value" => 6} # update the Document
655
679
  myEdge.destroy # delete the Document
@@ -733,6 +757,7 @@ myUser = ArangoUser.new user: "MyUser", password: "password"
733
757
 
734
758
  ``` ruby
735
759
  myUser.retrieve # Retrieve User
760
+ myUser["MyDatabase"] # Retrieve database if the user can access it
736
761
  myUser.create # Create a new User
737
762
  myUser.replace active: false # Replace User
738
763
  myUser.update active: false # Update User
data/lib/ArangoRB_AQL.rb CHANGED
@@ -31,10 +31,16 @@ class ArangoAQL < ArangoServer
31
31
  end
32
32
 
33
33
  attr_accessor :query, :batchSize, :ttl, :cache, :options, :bindVars
34
- attr_reader :count, :database, :count, :hasMore, :id, :result
34
+ attr_reader :count, :count, :hasMore, :id, :result
35
35
  alias size batchSize
36
36
  alias size= batchSize=
37
37
 
38
+ # === RETRIEVE ===
39
+
40
+ def database
41
+ ArangoDatabase.new(database: @database)
42
+ end
43
+
38
44
  # === EXECUTE QUERY ===
39
45
 
40
46
  def execute(count: true) # TESTED
@@ -49,29 +55,18 @@ class ArangoAQL < ArangoServer
49
55
  }.delete_if{|k,v| v.nil?}
50
56
  request = @@request.merge({ :body => body.to_json })
51
57
  result = self.class.post("/_db/#{@database}/_api/cursor", request)
52
- if @@async == "store"
53
- result.headers["x-arango-async-id"]
58
+ return result.headers["x-arango-async-id"]if @@async == "store"
59
+ result = result.parsed_response
60
+ return @@verbose ? result : result["errorMessage"] if result["error"]
61
+ @count = result["count"]
62
+ @hasMore = result["hasMore"]
63
+ @id = result["id"]
64
+ if(result["result"][0].nil? || !result["result"][0].is_a?(Hash) || !result["result"][0].key?("_key"))
65
+ @result = result["result"]
54
66
  else
55
- result = result.parsed_response
56
- if result["error"]
57
- return @@verbose ? result : result["errorMessage"]
58
- else
59
- @count = result["count"]
60
- @hasMore = result["hasMore"]
61
- @id = result["id"]
62
- if(result["result"][0].nil? || !result["result"][0].is_a?(Hash) || !result["result"][0].key?("_key"))
63
- @result = result["result"]
64
- else
65
- @result = result["result"].map{|x| ArangoDocument.new(
66
- key: x["_key"],
67
- collection: x["_id"].split("/")[0],
68
- database: @database,
69
- body: x
70
- )}
71
- end
72
- return @@verbose ? result : self
73
- end
67
+ @result = result["result"].map{|x| ArangoDocument.new(key: x["_key"], collection: x["_id"].split("/")[0], database: @database, body: x)}
74
68
  end
69
+ return @@verbose ? result : self
75
70
  end
76
71
 
77
72
  def next # TESTED
@@ -79,29 +74,18 @@ class ArangoAQL < ArangoServer
79
74
  print "No other results"
80
75
  else
81
76
  result = self.class.put("/_db/#{@database}/_api/cursor/#{@id}", @@request)
82
- if @@async == "store"
83
- result.headers["x-arango-async-id"]
77
+ return result.headers["x-arango-async-id"]if @@async == "store"
78
+ result = result.parsed_response
79
+ return @@verbose ? result : result["errorMessage"] if result["error"]
80
+ @count = result["count"]
81
+ @hasMore = result["hasMore"]
82
+ @id = result["id"]
83
+ if(result["result"][0].nil? || !result["result"][0].is_a?(Hash) || !result["result"][0].key?("_key"))
84
+ @result = result["result"]
84
85
  else
85
- result = result.parsed_response
86
- if result["error"]
87
- return @@verbose ? result : result["errorMessage"]
88
- else
89
- @count = result["count"]
90
- @hasMore = result["hasMore"]
91
- @id = result["id"]
92
- if(result["result"][0].nil? || !result["result"][0].is_a?(Hash) || !result["result"][0].key?("_key"))
93
- @result = result["result"]
94
- else
95
- @result = result["result"].map{|x| ArangoDocument.new(
96
- key: x["_key"],
97
- collection: x["_id"].split("/")[0],
98
- database: @database,
99
- body: x
100
- )}
101
- end
102
- return @@verbose ? result : self
103
- end
86
+ @result = result["result"].map{|x| ArangoDocument.new(key: x["_key"], collection: x["_id"].split("/")[0], database: @database, body: x)}
104
87
  end
88
+ return @@verbose ? result : self
105
89
  end
106
90
  end
107
91
 
@@ -168,22 +152,8 @@ class ArangoAQL < ArangoServer
168
152
  # === UTILITY ===
169
153
 
170
154
  def return_result(result:, caseTrue: false)
171
- if @@async == "store"
172
- result.headers["x-arango-async-id"]
173
- else
174
- result = result.parsed_response
175
- if @@verbose
176
- result
177
- else
178
- if result.is_a?(Hash) && result["error"]
179
- result["errorMessage"]
180
- else
181
- return true if caseTrue
182
- result.delete("error")
183
- result.delete("code")
184
- result
185
- end
186
- end
187
- end
155
+ return result.headers["x-arango-async-id"] if @@async == "store"
156
+ result = result.parsed_response
157
+ @@verbose ? result : (result.is_a?(Hash) && result["error"]) ? result["errorMessage"] : caseTrue ? true : result
188
158
  end
189
159
  end
data/lib/ArangoRB_Col.rb CHANGED
@@ -36,7 +36,19 @@ class ArangoCollection < ArangoServer
36
36
  end
37
37
  end
38
38
 
39
- attr_reader :database, :collection, :body, :type
39
+ attr_reader :collection, :body, :type
40
+ alias name collection
41
+
42
+ # === RETRIEVE ===
43
+
44
+ def [](document_name)
45
+ ArangoDocument.new(key: document_name, collection: @collection, database: @database)
46
+ end
47
+ alias document []
48
+
49
+ def database
50
+ ArangoDatabase.new(database: @database)
51
+ end
40
52
 
41
53
  # === GET ===
42
54
 
@@ -108,29 +120,11 @@ class ArangoCollection < ArangoServer
108
120
  end
109
121
 
110
122
  def create_document(document: {}, waitForSync: nil, returnNew: nil) # TESTED
111
- # if document.is_a? Hash
112
- # body = document
113
- # elsif document.is_a? ArangoDocument
114
- # body = document.body
115
- # elsif document.is_a? Array
116
- # body = document.map{|x| x.is_a?(Hash) ? x : x.is_a?(ArangoDocument) ? x.body : nil}
117
- # else
118
- # raise "document should be Hash, an ArangoDocument instance or an Array of Hashes or ArangoDocument instances"
119
- # end
120
123
  ArangoDocument.create(body: document, waitForSync: waitForSync, returnNew: returnNew, database: @database, collection: @collection)
121
124
  end
122
125
  alias create_vertex create_document
123
126
 
124
127
  def create_edge(document: {}, from:, to:, waitForSync: nil, returnNew: nil) # TESTED
125
- # if document.is_a? Hash
126
- # body = document
127
- # elsif document.is_a? ArangoDocument
128
- # body = document.body
129
- # elsif document.is_a? Array
130
- # body = document.map{|x| x.is_a?(Hash) ? x : x.is_a?(ArangoDocument) ? x.body : nil}
131
- # else
132
- # raise "document should be Hash, an ArangoDocument instance or an Array of Hashes or ArangoDocument instances"
133
- # end
134
128
  ArangoDocument.create_edge(body: document, from: from, to: to, waitForSync: waitForSync, returnNew: returnNew, database: @database, collection: @collection)
135
129
  end
136
130
 
@@ -191,23 +185,12 @@ class ArangoCollection < ArangoServer
191
185
  }.delete_if{|k,v| v.nil?}.to_json
192
186
  request = @@request.merge({ :body => body })
193
187
  result = self.class.put("/_db/#{@database}/_api/simple/all-keys", request)
194
- if @@async == "store"
195
- result.headers["x-arango-async-id"]
188
+ return result.headers["x-arango-async-id"] if @@async == "store"
189
+ result = result.parsed_response
190
+ if type.nil?
191
+ @@verbose ? result : result["error"] ? result["errorMessage"] : result["result"].map{|x| value = self.class.get(x).parsed_response; ArangoDocument.new(key: value["_key"], collection: @collection, body: value)}
196
192
  else
197
- result = result.parsed_response
198
- if type.nil?
199
- if @@verbose
200
- result
201
- else
202
- if result["error"]
203
- result["errorMessage"]
204
- else
205
- result["result"].map{|x| value = self.class.get(x).parsed_response; ArangoDocument.new(key: value["_key"], collection: @collection, body: value)}
206
- end
207
- end
208
- else
209
- @@verbose ? result : result["error"] ? result["errorMessage"] : result["result"]
210
- end
193
+ @@verbose ? result : result["error"] ? result["errorMessage"] : result["result"]
211
194
  end
212
195
  end
213
196
 
@@ -220,20 +203,9 @@ class ArangoCollection < ArangoServer
220
203
  }.delete_if{|k,v| v.nil?}.to_json
221
204
  request = @@request.merge({ :body => body })
222
205
  result = self.class.put("/_db/#{@database}/_api/simple/all", request)
223
- if @@async == "store"
224
- result.headers["x-arango-async-id"]
225
- else
226
- result = result.parsed_response
227
- if @@verbose
228
- result
229
- else
230
- if result["error"]
231
- result["errorMessage"]
232
- else
233
- result["result"].map{|x| ArangoDocument.new(key: x["_key"], collection: @collection, body: x)}
234
- end
235
- end
236
- end
206
+ result.headers["x-arango-async-id"] if @@async == "store"
207
+ result = result.parsed_response
208
+ @@verbose ? result : result["error"] ? result["errorMessage"] : result["result"].map{|x| ArangoDocument.new(key: x["_key"], collection: @collection, body: x)}
237
209
  end
238
210
 
239
211
  def documentsMatch(match:, skip: nil, limit: nil, batchSize: nil) # TESTED
@@ -246,20 +218,9 @@ class ArangoCollection < ArangoServer
246
218
  }.delete_if{|k,v| v.nil?}.to_json
247
219
  request = @@request.merge({ :body => body })
248
220
  result = self.class.put("/_db/#{@database}/_api/simple/by-example", request)
249
- if @@async == "store"
250
- result.headers["x-arango-async-id"]
251
- else
252
- result = result.parsed_response
253
- if @@verbose
254
- result
255
- else
256
- if result["error"]
257
- result["errorMessage"]
258
- else
259
- result["result"].map{|x| ArangoDocument.new(key: x["_key"], collection: @collection, body: x)}
260
- end
261
- end
262
- end
221
+ return result.headers["x-arango-async-id"] if @@async == "store"
222
+ result = result.parsed_response
223
+ @@verbose ? result : result["error"] ? result["errorMessage"] : result["result"].map{|x| ArangoDocument.new(key: x["_key"], collection: @collection, body: x)}
263
224
  end
264
225
 
265
226
  def documentMatch(match:) # TESTED
@@ -269,20 +230,9 @@ class ArangoCollection < ArangoServer
269
230
  }.delete_if{|k,v| v.nil?}.to_json
270
231
  request = @@request.merge({ :body => body })
271
232
  result = self.class.put("/_db/#{@database}/_api/simple/first-example", request)
272
- if @@async == "store"
273
- result.headers["x-arango-async-id"]
274
- else
275
- result = result.parsed_response
276
- if @@verbose
277
- result
278
- else
279
- if result["error"]
280
- result["errorMessage"]
281
- else
282
- ArangoDocument.new(key: result["document"]["_key"], collection: @collection, body: result["document"])
283
- end
284
- end
285
- end
233
+ return result.headers["x-arango-async-id"] if @@async == "store"
234
+ result = result.parsed_response
235
+ @@verbose ? result : result["error"] ? result["errorMessage"] : ArangoDocument.new(key: result["document"]["_key"], collection: @collection, body: result["document"])
286
236
  end
287
237
 
288
238
  def documentByKeys(keys:) # TESTED
@@ -291,40 +241,18 @@ class ArangoCollection < ArangoServer
291
241
  body = { "collection" => @collection, "keys" => keys }
292
242
  request = @@request.merge({ :body => body.to_json })
293
243
  result = self.class.put("/_db/#{@database}/_api/simple/lookup-by-keys", request)
294
- if @@async == "store"
295
- result.headers["x-arango-async-id"]
296
- else
297
- result = result.parsed_response
298
- if @@verbose
299
- result
300
- else
301
- if result["error"]
302
- result["errorMessage"]
303
- else
304
- result["documents"].map{|x| ArangoDocument.new(key: x["_key"], collection: @collection, body: x)}
305
- end
306
- end
307
- end
244
+ return result.headers["x-arango-async-id"] if @@async == "store"
245
+ result = result.parsed_response
246
+ @@verbose ? result : result["error"] ? result["errorMessage"] : result["documents"].map{|x| ArangoDocument.new(key: x["_key"], collection: @collection, body: x)}
308
247
  end
309
248
 
310
249
  def random # TESTED
311
250
  body = { "collection" => @collection }.to_json
312
251
  request = @@request.merge({ :body => body })
313
252
  result = self.class.put("/_db/#{@database}/_api/simple/any", request)
314
- if @@async == "store"
315
- result.headers["x-arango-async-id"]
316
- else
317
- result = result.parsed_response
318
- if @@verbose
319
- result
320
- else
321
- if result["error"]
322
- result["errorMessage"]
323
- else
324
- ArangoDocument.new(key: result["document"]["_key"], collection: @collection, body: result["document"])
325
- end
326
- end
327
- end
253
+ return result.headers["x-arango-async-id"] if @@async == "store"
254
+ result = result.parsed_response
255
+ @@verbose ? result : result["error"] ? result["errorMessage"] : ArangoDocument.new(key: result["document"]["_key"], collection: @collection, body: result["document"])
328
256
  end
329
257
 
330
258
  def removeByKeys(keys:, options: nil) # TESTED
@@ -384,30 +312,12 @@ class ArangoCollection < ArangoServer
384
312
  "details": details
385
313
  }.delete_if{|k,v| v.nil?}
386
314
  body = "#{attributes}\n"
387
- if values[0].is_a? Array
388
- values.each{|x| body += "#{x}\n"}
389
- else
390
- body += "#{values}\n"
391
- end
392
- # print body
315
+ values[0].is_a?(Array) ? values.each{|x| body += "#{x}\n"} : body += "#{values}\n"
393
316
  request = @@request.merge({ :body => body, :query => query })
394
317
  result = self.class.post("/_db/#{@database}/_api/import", request)
395
- if @@async == "store"
396
- result.headers["x-arango-async-id"]
397
- else
398
- result = result.parsed_response
399
- if @@verbose
400
- result
401
- else
402
- if result["error"]
403
- result["errorMessage"]
404
- else
405
- result.delete("error")
406
- result.delete("code")
407
- result
408
- end
409
- end
410
- end
318
+ return result.headers["x-arango-async-id"] if @@async == "store"
319
+ result = result.parsed_response
320
+ @@verbose ? result : result["error"] ? result["errorMessage"] : result.delete_if{|k,v| k == "error" || k == "code"}
411
321
  end
412
322
 
413
323
  def importJSON(body:, type: "auto", from: nil, to: nil, overwrite: nil, waitForSync: nil, onDuplicate: nil, complete: nil, details: nil) # TESTED
@@ -424,22 +334,9 @@ class ArangoCollection < ArangoServer
424
334
  }.delete_if{|k,v| v.nil?}
425
335
  request = @@request.merge({ :body => body.to_json, :query => query })
426
336
  result = self.class.post("/_db/#{@database}/_api/import", request)
427
- if @@async == "store"
428
- result.headers["x-arango-async-id"]
429
- else
430
- result = result.parsed_response
431
- if @@verbose
432
- result
433
- else
434
- if result["error"]
435
- result["errorMessage"]
436
- else
437
- result.delete("error")
438
- result.delete("code")
439
- result
440
- end
441
- end
442
- end
337
+ return result.headers["x-arango-async-id"] if @@async == "store"
338
+ result = result.parsed_response
339
+ @@verbose ? result : result["error"] ? result["errorMessage"] : result.delete_if{|k,v| k == "error" || k == "code"}
443
340
  end
444
341
 
445
342
  # === EXPORT ===
@@ -456,29 +353,18 @@ class ArangoCollection < ArangoServer
456
353
  }.delete_if{|k,v| v.nil?}
457
354
  request = @@request.merge({ :body => body.to_json, :query => query })
458
355
  result = self.class.post("/_db/#{@database}/_api/export", request)
459
- if @@async == "store"
460
- result.headers["x-arango-async-id"]
356
+ return result.headers["x-arango-async-id"] if @@async == "store"
357
+ result = result.parsed_response
358
+ return @@verbose ? result : result["errorMessage"] if result["error"]
359
+ @countExport = result["count"]
360
+ @hasMoreExport = result["hasMore"]
361
+ @idExport = result["id"]
362
+ if(result["result"][0].nil? || !result["result"][0].is_a?(Hash) || !result["result"][0].key?("_key"))
363
+ result = result["result"]
461
364
  else
462
- result = result.parsed_response
463
- if result["error"]
464
- return @@verbose ? result : result["errorMessage"]
465
- else
466
- @countExport = result["count"]
467
- @hasMoreExport = result["hasMore"]
468
- @idExport = result["id"]
469
- if(result["result"][0].nil? || !result["result"][0].is_a?(Hash) || !result["result"][0].key?("_key"))
470
- result = result["result"]
471
- else
472
- result = result["result"].map{|x| ArangoDocument.new(
473
- key: x["_key"],
474
- collection: @collection,
475
- database: @database,
476
- body: x
477
- )}
478
- end
479
- result
480
- end
365
+ result = result["result"].map{|x| ArangoDocument.new(key: x["_key"], collection: @collection, database: @database, body: x)}
481
366
  end
367
+ result
482
368
  end
483
369
 
484
370
  def exportNext # TESTED
@@ -488,29 +374,18 @@ class ArangoCollection < ArangoServer
488
374
  query = { "collection": @collection }
489
375
  request = @@request.merge({ :query => query })
490
376
  result = self.class.put("/_db/#{@database}/_api/cursor/#{@idExport}", request)
491
- if @@async == "store"
492
- result.headers["x-arango-async-id"]
377
+ return result.headers["x-arango-async-id"] if @@async == "store"
378
+ result = result.parsed_response
379
+ return @@verbose ? result : result["errorMessage"] if result["error"]
380
+ @countExport = result["count"]
381
+ @hasMoreExport = result["hasMore"]
382
+ @idExport = result["id"]
383
+ if(result["result"][0].nil? || !result["result"][0].is_a?(Hash) || !result["result"][0].key?("_key"))
384
+ result = result["result"]
493
385
  else
494
- result = result.parsed_response
495
- if result["error"]
496
- return @@verbose ? result : result["errorMessage"]
497
- else
498
- @countExport = result["count"]
499
- @hasMoreExport = result["hasMore"]
500
- @idExport = result["id"]
501
- if(result["result"][0].nil? || !result["result"][0].is_a?(Hash) || !result["result"][0].key?("_key"))
502
- result = result["result"]
503
- else
504
- result = result["result"].map{|x| ArangoDocument.new(
505
- key: x["_key"],
506
- collection: @collection,
507
- database: @database,
508
- body: x
509
- )}
510
- end
511
- result
512
- end
386
+ result = result["result"].map{|x| ArangoDocument.new(key: x["_key"], collection: @collection, database: @database, body: x)}
513
387
  end
388
+ result
514
389
  end
515
390
  end
516
391
 
@@ -538,23 +413,13 @@ class ArangoCollection < ArangoServer
538
413
  query = { "collection": @collection }
539
414
  request = @@request.merge({ :query => query })
540
415
  result = self.class.get("/_db/#{@database}/_api/index", request)
541
- if @@async == "store"
542
- result.headers["x-arango-async-id"]
543
- else
544
- result = result.parsed_response
545
- if @@verbose
546
- result
547
- else
548
- if result["error"]
549
- result["errorMessage"]
550
- else
551
- result.delete("error")
552
- result.delete("code")
553
- 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"])}
554
- result
555
- end
556
- end
557
- end
416
+ return result.headers["x-arango-async-id"] if @@async == "store"
417
+ result = result.parsed_response
418
+ return result if @@verbose
419
+ return result["errorMessage"] if result["error"]
420
+ result.delete_if{|k,v| k == "error" || k == "code"}
421
+ 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"])}
422
+ result
558
423
  end
559
424
 
560
425
  def createIndex(body: {}, unique: nil, type:, fields:, id: nil) # TESTED
@@ -565,20 +430,9 @@ class ArangoCollection < ArangoServer
565
430
  query = { "collection": @collection }
566
431
  request = @@request.merge({ :body => body.to_json, :query => query })
567
432
  result = self.class.post("/_db/#{@database}/_api/index", request)
568
- if @@async == "store"
569
- result.headers["x-arango-async-id"]
570
- else
571
- result = result.parsed_response
572
- if @@verbose
573
- result
574
- else
575
- if result["error"]
576
- result["errorMessage"]
577
- else
578
- ArangoIndex.new(body: result, id: result["id"], database: @database, collection: @collection, type: result["type"], unique: result["unique"], fields: result["fields"])
579
- end
580
- end
581
- end
433
+ return result.headers["x-arango-async-id"] if @@async == "store"
434
+ result = result.parsed_response
435
+ @@verbose ? result : result["error"] ? result["errorMessage"] : ArangoIndex.new(body: result, id: result["id"], database: @database, collection: @collection, type: result["type"], unique: result["unique"], fields: result["fields"])
582
436
  end
583
437
  #
584
438
  # def deleteIndex(id:) # TESTED
@@ -614,54 +468,31 @@ class ArangoCollection < ArangoServer
614
468
  }.delete_if{|k,v| v.nil?}
615
469
  request = @@request.merge({ :query => query })
616
470
  result = self.class.get("/_db/#{@database}/_api/replication/dump", request)
617
- if @@async == "store"
618
- result.headers["x-arango-async-id"]
619
- else
620
- result = result.parsed_response
621
- if @@verbose
622
- result
623
- else
624
- if result["error"]
625
- result["errorMessage"]
626
- else
627
- result
628
- end
629
- end
630
- end
471
+ return result.headers["x-arango-async-id"] if @@async == "store"
472
+ result = result.parsed_response
473
+ @@verbose ? result : result["error"] ? result["errorMessage"] : result
631
474
  end
632
475
 
633
476
  # === UTILITY ===
634
477
 
635
478
  def return_result(result:, caseTrue: false, key: nil, checkType: false)
636
- if @@async == "store"
637
- result.headers["x-arango-async-id"]
638
- else
639
- result = result.parsed_response
640
- if @@verbose || !result.is_a?(Hash)
641
- resultTemp = result
642
- unless result["errorMessage"]
643
- result.delete("error")
644
- result.delete("code")
645
- @body = result
646
- @type = result["type"] == 2 ? "Document" : "Edge" if(checkType)
647
- end
648
- resultTemp
649
- else
650
- if result["error"]
651
- result["errorMessage"]
652
- else
653
- return true if caseTrue
654
- result.delete("error")
655
- result.delete("code")
656
- @body = result
657
- @type = result["type"] == 2 ? "Document" : "Edge" if(checkType)
658
- if key.nil?
659
- self
660
- else
661
- result[key]
662
- end
663
- end
479
+ return result.headers["x-arango-async-id"] if @@async == "store"
480
+ result = result.parsed_response
481
+ if @@verbose || !result.is_a?(Hash)
482
+ resultTemp = result
483
+ unless result["errorMessage"]
484
+ result.delete_if{|k,v| k == "error" || k == "code"}
485
+ @body = result
486
+ @type = result["type"] == 2 ? "Document" : "Edge" if(checkType)
664
487
  end
488
+ resultTemp
489
+ else
490
+ return result["errorMessage"] if result["error"]
491
+ return true if caseTrue
492
+ result.delete_if{|k,v| k == "error" || k == "code"}
493
+ @body = result
494
+ @type = result["type"] == 2 ? "Document" : "Edge" if(checkType)
495
+ key.nil? ? self : result[key]
665
496
  end
666
497
  end
667
498
  end