arangorb 1.4.1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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.rb CHANGED
@@ -1,16 +1,24 @@
1
1
  require "httparty"
2
- require_relative "ArangoRB_Ser"
3
- require_relative "ArangoRB_DB"
4
- require_relative "ArangoRB_Col"
5
- require_relative "ArangoRB_Doc"
6
- require_relative "ArangoRB_Gra"
7
- require_relative "ArangoRB_Ver"
8
- require_relative "ArangoRB_Edg"
9
- require_relative "ArangoRB_Tra"
10
- require_relative "ArangoRB_AQL"
11
- require_relative "ArangoRB_User"
12
- require_relative "ArangoRB_Index"
13
- require_relative "ArangoRB_Task"
14
- require_relative "ArangoRB_Tran"
15
- require_relative "ArangoRB_Cache"
16
- require_relative "ArangoRB_Replication"
2
+ require "oj"
3
+ require "connection_pool"
4
+ require_relative "helpers/Error"
5
+ require_relative "helpers/Return"
6
+ require_relative "AQL"
7
+ require_relative "Batch"
8
+ require_relative "Server"
9
+ require_relative "Collection"
10
+ require_relative "Database"
11
+ require_relative "Document"
12
+ require_relative "Edge"
13
+ require_relative "Error"
14
+ require_relative "Foxx"
15
+ require_relative "Graph"
16
+ require_relative "Index"
17
+ require_relative "Task"
18
+ require_relative "Transaction"
19
+ require_relative "Traversal"
20
+ require_relative "User"
21
+ require_relative "Vertex"
22
+ require_relative "View"
23
+ require_relative "Cache"
24
+ require_relative "Request"
@@ -0,0 +1,28 @@
1
+ module Arango
2
+ module Helper_Error
3
+ def satisfy_class?(object, classes=[String], array=false)
4
+ if array
5
+ object = [object] unless object.is_a?(Array)
6
+ object.each do |obj|
7
+ satisfy_class?(obj, classes, false)
8
+ end
9
+ else
10
+ return if classes.include?(object.class)
11
+ name ||= object.object_id.to_s
12
+ raise Arango::Error.new err: :wrong_class, data: {"wrong_value": name,
13
+ "wrong_class": object.class.to_s, "expected_class": classes.to_s}
14
+ end
15
+ end
16
+
17
+ def satisfy_category?(object, list)
18
+ return if list.include?(object)
19
+ name = object.object_id.to_s
20
+ raise Arango::Error.new err: :wrong_element, data: {"wrong_attribute": name,
21
+ "wrong_value": object, "list": list}
22
+ end
23
+
24
+ def warning_deprecated(warning, name)
25
+ puts "ARANGORB WARNING: #{name} function is deprecated" if warning
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,53 @@
1
+ module Arango
2
+ module Helper_Return
3
+ def return_directly?(result)
4
+ return @server.async != false || @server.return_output
5
+ return result == true
6
+ end
7
+
8
+ def return_element(result)
9
+ return result if @server.async != false
10
+ assign_attributes(result)
11
+ return return_directly?(result) ? result : self
12
+ end
13
+
14
+ def return_delete(result)
15
+ return result if @server.async != false
16
+ return return_directly?(result) ? result : true
17
+ end
18
+ end
19
+ end
20
+
21
+ module Arango
22
+ module Server_Return
23
+ def server=(server)
24
+ satisfy_class?(server, [Arango::Server])
25
+ @server = server
26
+ end
27
+ alias assign_server server=
28
+ end
29
+ end
30
+
31
+ module Arango
32
+ module Database_Return
33
+ def database=(database)
34
+ satisfy_class?(database, [Arango::Database])
35
+ @database = database
36
+ @server = @database.server
37
+ end
38
+ alias assign_database database=
39
+ end
40
+ end
41
+
42
+ module Arango
43
+ module Collection_Return
44
+ def collection=(collection)
45
+ satisfy_class?(collection, [Arango::Collection])
46
+ @collection = collection
47
+ @graph = @collection.graph
48
+ @database = @collection.database
49
+ @server = @database.server
50
+ end
51
+ alias assign_collection collection=
52
+ end
53
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: arangorb
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.1
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Stefano Martin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-02-17 00:00:00.000000000 Z
11
+ date: 2018-11-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -30,6 +30,46 @@ dependencies:
30
30
  - - ">="
31
31
  - !ruby/object:Gem::Version
32
32
  version: 0.14.0
33
+ - !ruby/object:Gem::Dependency
34
+ name: oj
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: 3.6.11
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: 3.6.11
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - "~>"
48
+ - !ruby/object:Gem::Version
49
+ version: 3.6.11
50
+ - - ">="
51
+ - !ruby/object:Gem::Version
52
+ version: 3.6.11
53
+ - !ruby/object:Gem::Dependency
54
+ name: connection_pool
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: 2.2.2
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ version: 2.2.2
63
+ type: :runtime
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - "~>"
68
+ - !ruby/object:Gem::Version
69
+ version: 2.2.2
70
+ - - ">="
71
+ - !ruby/object:Gem::Version
72
+ version: 2.2.2
33
73
  description: Ruby driver for ArangoDB's HTTP API
34
74
  email:
35
75
  - stefano@seluxit.com
@@ -41,50 +81,29 @@ files:
41
81
  - Gemfile
42
82
  - LICENSE
43
83
  - README.md
44
- - lib/ArangoRB_AQL.rb
45
- - lib/ArangoRB_Cache.rb
46
- - lib/ArangoRB_Col.rb
47
- - lib/ArangoRB_DB.rb
48
- - lib/ArangoRB_Doc.rb
49
- - lib/ArangoRB_Edg.rb
50
- - lib/ArangoRB_Gra.rb
51
- - lib/ArangoRB_Index.rb
52
- - lib/ArangoRB_Replication.rb
53
- - lib/ArangoRB_Ser.rb
54
- - lib/ArangoRB_Task.rb
55
- - lib/ArangoRB_Tra.rb
56
- - lib/ArangoRB_Tran.rb
57
- - lib/ArangoRB_User.rb
58
- - lib/ArangoRB_Ver.rb
84
+ - lib/AQL.rb
85
+ - lib/Batch.rb
86
+ - lib/Cache.rb
87
+ - lib/Collection.rb
88
+ - lib/Database.rb
89
+ - lib/Document.rb
90
+ - lib/Edge.rb
91
+ - lib/Error.rb
92
+ - lib/Foxx.rb
93
+ - lib/Graph.rb
94
+ - lib/Index.rb
95
+ - lib/Replication.rb
96
+ - lib/Request.rb
97
+ - lib/Server.rb
98
+ - lib/Task.rb
99
+ - lib/Transaction.rb
100
+ - lib/Traversal.rb
101
+ - lib/User.rb
102
+ - lib/Vertex.rb
103
+ - lib/View.rb
59
104
  - lib/arangorb.rb
60
- - spec/arangoRB_helper.rb
61
- - spec/arangoRestart_helper.rb
62
- - spec/arangorb-1.3.0.gem
63
- - spec/lib/0.1.0/arangoAQL_helper.rb
64
- - spec/lib/0.1.0/arangoC_helper.rb
65
- - spec/lib/0.1.0/arangoDB_helper.rb
66
- - spec/lib/0.1.0/arangoDoc_helper.rb
67
- - spec/lib/0.1.0/arangoE_helper.rb
68
- - spec/lib/0.1.0/arangoG_helper.rb
69
- - spec/lib/0.1.0/arangoS_helper.rb
70
- - spec/lib/0.1.0/arangoT_helper.rb
71
- - spec/lib/0.1.0/arangoV_helper.rb
72
- - spec/lib/1.0.0/arangoC_helper.rb
73
- - spec/lib/1.0.0/arangoDB_helper.rb
74
- - spec/lib/1.0.0/arangoI_helper.rb
75
- - spec/lib/1.0.0/arangoS_helper.rb
76
- - spec/lib/1.0.0/arangoTa_helper.rb
77
- - spec/lib/1.0.0/arangoTr_helper.rb
78
- - spec/lib/1.0.0/arangoU_helper.rb
79
- - spec/lib/1.1.0/arangoRB_helper.rb
80
- - spec/lib/1.1.0/arangoRB_walks_helper.rb
81
- - spec/lib/1.2.0/arangoCache_helper.rb
82
- - spec/lib/1.3.0/arangoHash_helper.rb
83
- - spec/lib/arangoRB_0.1.0_helper.rb
84
- - spec/lib/arangoRB_1.0.0_helper.rb
85
- - spec/lib/arangoRB_1.1.0_helper.rb
86
- - spec/lib/arangoRB_1.2.0_helper.rb
87
- - spec/spec_helper.rb
105
+ - lib/helpers/Error.rb
106
+ - lib/helpers/Return.rb
88
107
  homepage: https://github.com/StefanoMartin/ArangoRB
89
108
  licenses:
90
109
  - MIT
data/lib/ArangoRB_AQL.rb DELETED
@@ -1,181 +0,0 @@
1
- # === AQL ===
2
-
3
- class ArangoAQL < ArangoServer
4
- def initialize(query: nil, batchSize: nil, ttl: nil, cache: nil, options: nil, bindVars: nil, database: @@database) # TESTED
5
- if query.is_a?(String)
6
- @query = query
7
- elsif query.is_a?(ArangoAQL)
8
- @query = query.query
9
- else
10
- raise "query should be String or ArangoAQL instance, not a #{query.class}"
11
- end
12
-
13
- if database.is_a?(String)
14
- @database = database
15
- elsif database.is_a?(ArangoDatabase)
16
- @database = database.database
17
- else
18
- raise "databaseshould be String or ArangoDatabase instance, not a #{database.class}"
19
- end
20
-
21
- @batchSize = batchSize
22
- @ttl = ttl
23
- @cache = cache
24
- @options = options
25
- @bindVars = bindVars
26
-
27
- @count = true
28
- @quantity = nil
29
- @hasMore = false
30
- @id = ""
31
- @result = []
32
- @idCache = "AQL_#{@query}"
33
- end
34
-
35
- attr_accessor :count, :query, :batchSize, :ttl, :cache, :options, :bindVars, :quantity
36
- attr_reader :hasMore, :id, :result, :idCache
37
- alias size batchSize
38
- alias size= batchSize=
39
-
40
- # === RETRIEVE ===
41
-
42
- def to_hash
43
- {
44
- "query" => @query,
45
- "database" => @database,
46
- "result" => @result.map{|x| x.is_a?(ArangoServer) ? x.to_h : x},
47
- "count" => @count,
48
- "quantity" => @quantity,
49
- "ttl" => @ttl,
50
- "cache" => @cache,
51
- "batchSize" => @batchSize,
52
- "bindVars" => @bindVars,
53
- "options" => @options,
54
- "idCache" => @idCache,
55
- }.delete_if{|k,v| v.nil?}
56
- end
57
- alias to_h to_hash
58
-
59
- def database
60
- ArangoDatabase.new(database: @database)
61
- end
62
-
63
- # === EXECUTE QUERY ===
64
-
65
- def execute # TESTED
66
- body = {
67
- "query" => @query,
68
- "count" => count,
69
- "batchSize" => @batchSize,
70
- "ttl" => @ttl,
71
- "cache" => @cache,
72
- "options" => @options,
73
- "bindVars" => @bindVars
74
- }.delete_if{|k,v| v.nil?}
75
- request = @@request.merge({ :body => body.to_json })
76
- result = self.class.post("/_db/#{@database}/_api/cursor", request)
77
- return result.headers["x-arango-async-id"] if @@async == "store"
78
- return true if @@async
79
- result = result.parsed_response
80
- return @@verbose ? result : result["errorMessage"] if result["error"]
81
- @quantity = result["count"]
82
- @hasMore = result["hasMore"]
83
- @id = result["id"]
84
- if(result["result"][0].nil? || !result["result"][0].is_a?(Hash) || !result["result"][0].key?("_key"))
85
- @result = result["result"]
86
- else
87
- @result = result["result"].map{|x| ArangoDocument.new(key: x["_key"], collection: x["_id"].split("/")[0], database: @database, body: x)}
88
- end
89
- return @@verbose ? result : self
90
- end
91
-
92
- def next # TESTED
93
- unless @hasMore
94
- print "No other results"
95
- else
96
- result = self.class.put("/_db/#{@database}/_api/cursor/#{@id}", @@request)
97
- return result.headers["x-arango-async-id"] if @@async == "store"
98
- return true if @@async
99
- result = result.parsed_response
100
- return @@verbose ? result : result["errorMessage"] if result["error"]
101
- @count = result["count"]
102
- @hasMore = result["hasMore"]
103
- @id = result["id"]
104
- if(result["result"][0].nil? || !result["result"][0].is_a?(Hash) || !result["result"][0].key?("_key"))
105
- @result = result["result"]
106
- else
107
- @result = result["result"].map{|x| ArangoDocument.new(key: x["_key"], collection: x["_id"].split("/")[0], database: @database, body: x)}
108
- end
109
- return @@verbose ? result : self
110
- end
111
- end
112
-
113
- # === PROPERTY QUERY ===
114
-
115
- def explain # TESTED
116
- body = {
117
- "query" => @query,
118
- "options" => @options,
119
- "bindVars" => @bindVars
120
- }.delete_if{|k,v| v.nil?}
121
- request = @@request.merge({ :body => body.to_json })
122
- result = self.class.post("/_db/#{@database}/_api/explain", request)
123
- return_result result: result
124
- end
125
-
126
- def parse # TESTED
127
- body = { "query" => @query }
128
- request = @@request.merge({ :body => body.to_json })
129
- result = self.class.post("/_db/#{@database}/_api/query", request)
130
- return_result result: result
131
- end
132
-
133
- def properties # TESTED
134
- result = self.class.get("/_db/#{@database}/_api/query/properties", @@request)
135
- return_result result: result
136
- end
137
-
138
- def current # TESTED
139
- result = self.class.get("/_db/#{@database}/_api/query/current", @@request)
140
- return_result result: result
141
- end
142
-
143
- def slow # TESTED
144
- result = self.class.get("/_db/#{@database}/_api/query/slow", @@request)
145
- return_result result: result
146
- end
147
-
148
- # === DELETE ===
149
-
150
- def stopSlow # TESTED
151
- result = self.class.delete("/_db/#{@database}/_api/query/slow", @@request)
152
- return_result result: result, caseTrue: true
153
- end
154
-
155
- def kill(id: @id) # TESTED
156
- result = self.class.delete("/_db/#{@database}/_api/query/#{id}", @@request)
157
- return_result result: result, caseTrue: true
158
- end
159
-
160
- def changeProperties(slowQueryThreshold: nil, enabled: nil, maxSlowQueries: nil, trackSlowQueries: nil, maxQueryStringLength: nil) # TESTED
161
- body = {
162
- "slowQueryThreshold" => slowQueryThreshold,
163
- "enabled" => enabled,
164
- "maxSlowQueries" => maxSlowQueries,
165
- "trackSlowQueries" => trackSlowQueries,
166
- "maxQueryStringLength" => maxQueryStringLength
167
- }.delete_if{|k,v| v.nil?}
168
- request = @@request.merge({ :body => body.to_json })
169
- result = self.class.put("/_db/#{@database}/_api/query/properties", request)
170
- return_result result: result
171
- end
172
-
173
- # === UTILITY ===
174
-
175
- def return_result(result:, caseTrue: false)
176
- return result.headers["x-arango-async-id"] if @@async == "store"
177
- return true if @@async
178
- result = result.parsed_response
179
- @@verbose ? result : (result.is_a?(Hash) && result["error"]) ? result["errorMessage"] : caseTrue ? true : result
180
- end
181
- end
@@ -1,174 +0,0 @@
1
- # ==== CACHE ====
2
-
3
- class ArangoCache
4
- @max = {
5
- "Database" => 1,
6
- "Collection" => 20,
7
- "Document" => 200,
8
- "Graph" => 1,
9
- "Vertex" => 50,
10
- "Edge" => 100,
11
- "Index" => 20,
12
- "AQL" => 100,
13
- "User" => 50,
14
- "Task" => 20,
15
- "Traversal" => 20,
16
- "Transaction" => 20,
17
- "Other" => 100
18
- }
19
- @cache = {
20
- "Database" => {},
21
- "Collection" => {},
22
- "Document" => {},
23
- "Graph" => {},
24
- "Vertex" => {},
25
- "Edge" => {},
26
- "Index" => {},
27
- "AQL" => {},
28
- "User" => {},
29
- "Task" => {},
30
- "Traversal" => {},
31
- "Transaction" => {},
32
- "Other" => {}
33
- }
34
-
35
- class << self
36
- attr_accessor :max
37
-
38
- def max(type:, val:)
39
- return nil if @max[type].nil?
40
- while @cache[type].length > val
41
- @cache[type].shift
42
- end
43
- @max[type] = val
44
- end
45
-
46
- def retrieve
47
- @cache
48
- end
49
-
50
- def cache(id: nil, data:)
51
- val_to_cache = []
52
- data = [data] unless data.is_a? Array
53
-
54
- if id.nil?
55
- data.each do |d|
56
- type = d.class.to_s
57
- type.slice! "Arango"
58
- if @max[type].nil?
59
- type = "Other"
60
- idCache = "OTH_#{d.class.to_s}_#{Random.rand(10^12)}"
61
- else
62
- idCache = d.idCache
63
- end
64
- val_to_cache << [type, idCache, d]
65
- end
66
- else
67
- id = [id] unless id.is_a? Array
68
- if data.length == id.length
69
- for i in 0...id.length
70
- type = data[i].class.to_s
71
- type.slice! "Arango"
72
- type = "Other" if @max[type].nil?
73
- val_to_cache << [type, id[i], data[i]]
74
- end
75
- else
76
- return "Id should be a String or an Array with the same size of the Data Array"
77
- end
78
- end
79
-
80
- val_to_cache.each do |val|
81
- @cache[val[0]][val[1]] = val[2]
82
- @cache[val[0]].shift if @cache[val[0]].length > @max[val[0]]
83
- end
84
-
85
- val_to_cache
86
- end
87
-
88
- def uncache(type: nil, id: nil, data: nil)
89
- if id.nil? && data.nil? && !type.nil?
90
- val_to_uncache = @cache[type].map{|k,v| v}
91
- val_to_uncache = val_to_uncache[0] if val_to_uncache.length == 1
92
- return val_to_uncache
93
- end
94
-
95
- val_to_uncache = []
96
- unless data.nil?
97
- data = [data] unless data.is_a? Array
98
- data.each do |d|
99
- type = d.class.to_s
100
- type.slice! "Arango"
101
- next if @max[type].nil? || type == "Other"
102
- idCache = d.idCache
103
- val_to_uncache << [type, idCache]
104
- end
105
- end
106
- unless type.nil? || id.nil?
107
- id = [id] unless id.is_a? Array
108
- if type.is_a? Array
109
- if type.length == id.length
110
- for i in 0...type.length
111
- val_to_uncache << [type[i], id[i]]
112
- end
113
- else
114
- return "Type should be a String or an Array with the same size of the Id Array"
115
- end
116
- elsif type.is_a? String
117
- id.each do |idCache|
118
- val_to_uncache << [type, idCache]
119
- end
120
- else
121
- return "Type should be a String or an Array with the same size of the Id Array"
122
- end
123
- end
124
- val_to_uncache = val_to_uncache.map{|val| @cache[val[0]][val[1]]}
125
- val_to_uncache = val_to_uncache[0] if val_to_uncache.length == 1
126
- val_to_uncache
127
- end
128
-
129
- def clear(type: nil, id: nil, data: nil)
130
- if type.nil? && id.nil? && data.nil?
131
- @cache = { "Database" => {}, "Collection" => {}, "Document" => {}, "Graph" => {}, "Vertex" => {}, "Edge" => {}, "Index" => {}, "Query" => {},"User" => {}, "Traversal" => {}, "Transaction" => {} }
132
- return true
133
- end
134
-
135
- if !type.nil? && id.nil? && data.nil?
136
- @cache[type] = {}
137
- return true
138
- end
139
-
140
- val_to_clear = []
141
- unless data.nil?
142
- data = [data] unless data.is_a? Array
143
- data.each do |d|
144
- type = d.class.to_s
145
- type.slice! "Arango"
146
- next if @max[type].nil? || type == "Other"
147
- val_to_clear << [type, d.idCache]
148
- end
149
- end
150
-
151
- unless type.nil? || id.nil?
152
- id = [id] unless id.is_a? Array
153
- if type.is_a? Array
154
- if type.length == id.length
155
- for i in 0...type.length
156
- val_to_clear << [type[i], id[i]]
157
- end
158
- else
159
- return "Type should be a String or an Array with the same size of the Id Array"
160
- end
161
- elsif type.is_a? String
162
- id.each do |idCache|
163
- val_to_clear << [type, idCache]
164
- end
165
- else
166
- return "Type should be a String or an Array with the same size of the Id Array"
167
- end
168
- end
169
-
170
- val_to_clear.each{|val| @cache[val[0]].delete(val[1])}
171
- true
172
- end
173
- end
174
- end