arangorb 1.0.0 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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