Class: ArangoDatabase
- Inherits:
-
ArangoServer
- Object
- ArangoServer
- ArangoDatabase
- Defined in:
- lib/ArangoRB_DB.rb
Overview
DATABASE ===
Instance Attribute Summary collapse
-
#database ⇒ Object
(also: #name)
readonly
TESTED.
-
#id ⇒ Object
readonly
TESTED.
-
#idCache ⇒ Object
readonly
TESTED.
-
#isSystem ⇒ Object
readonly
TESTED.
-
#path ⇒ Object
readonly
TESTED.
Class Method Summary collapse
-
.databases(user: nil) ⇒ Object
LISTS ===.
Instance Method Summary collapse
- #[](collection_name) ⇒ Object (also: #collection)
-
#changePropertiesQuery(slowQueryThreshold: nil, enabled: nil, maxSlowQueries: nil, trackSlowQueries: nil, maxQueryStringLength: nil) ⇒ Object
TESTED.
-
#changePropertyCache(mode: nil, maxResults: nil) ⇒ Object
TESTED.
-
#clearCache ⇒ Object
CACHE ===.
-
#clusterInventory(includeSystem: false) ⇒ Object
TESTED.
-
#collections(excludeSystem: true) ⇒ Object
TESTED.
-
#create(username: nil, passwd: nil, users: nil) ⇒ Object
POST ===.
-
#createFunction(code:, name:, isDeterministic: nil) ⇒ Object
AQL FUNCTION ===.
-
#currentQuery ⇒ Object
TESTED.
-
#deleteFunction(name:) ⇒ Object
TESTED.
-
#destroy ⇒ Object
DELETE ===.
-
#functions ⇒ Object
TESTED.
-
#grant(user: @@user) ⇒ Object
USER ===.
- #graph(graph_name) ⇒ Object
-
#graphs ⇒ Object
TESTED.
-
#info ⇒ Object
GET ===.
-
#initialize(database: @@database) ⇒ ArangoDatabase
constructor
TESTED.
-
#inventory(includeSystem: false) ⇒ Object
REPLICATION ===.
-
#killQuery(query:) ⇒ Object
TESTED.
-
#propertiesQuery ⇒ Object
QUERY ===.
-
#propertyCache ⇒ Object
TESTED.
-
#retrieve ⇒ Object
TESTED.
-
#revoke(user: @@user) ⇒ Object
TESTED.
-
#slowQuery ⇒ Object
TESTED.
-
#stopSlowQuery ⇒ Object
TESTED.
-
#to_hash ⇒ Object
(also: #to_h)
RETRIEVE ===.
Methods inherited from ArangoServer
address, async, async=, batch, cancelAsync, changePropertyWAL, checkPort, cluster, cluster=, clusterRoundtrip, clusterStatistics, collection, collection=, createDumpBatch, database, database=, databaseVersion, default_server, destroyAllAsync, destroyAsync, destroyCluster, destroyDumpBatch, destroyExpiredAsync, echo, endpoints, execute, executeCluster, executeClusterHead, executeClusterPut, fetchAsync, flushWAL, graph, graph=, log, pendingAsync, prolongDumpBatch, propertyWAL, reload, request, restart, retrieveAsync, retrieveDoneAsync, retrievePendingAsync, return_result, return_result_async, role, server, serverId, shutdown, sleep, statistics, tasks, test, time, transactions, updateCluster, user, user=, username, users, verbose, verbose=, version
Constructor Details
#initialize(database: @@database) ⇒ ArangoDatabase
TESTED
8 9 10 11 12 13 14 15 16 17 |
# File 'lib/ArangoRB_DB.rb', line 8 def initialize(database: @@database) # TESTED if database.is_a?(String) @database = database elsif database.is_a?(ArangoDatabase) @database = database.database else raise "database should be a String or an ArangoDatabase instance, not a #{database.class}" end @idCache = "DB_#{@database}" end |
Instance Attribute Details
#database ⇒ Object (readonly) Also known as: name
TESTED
19 20 21 |
# File 'lib/ArangoRB_DB.rb', line 19 def database @database end |
#id ⇒ Object (readonly)
TESTED
19 20 21 |
# File 'lib/ArangoRB_DB.rb', line 19 def id @id end |
#idCache ⇒ Object (readonly)
TESTED
19 20 21 |
# File 'lib/ArangoRB_DB.rb', line 19 def idCache @idCache end |
#isSystem ⇒ Object (readonly)
TESTED
19 20 21 |
# File 'lib/ArangoRB_DB.rb', line 19 def isSystem @isSystem end |
#path ⇒ Object (readonly)
TESTED
19 20 21 |
# File 'lib/ArangoRB_DB.rb', line 19 def path @path end |
Class Method Details
.databases(user: nil) ⇒ Object
LISTS ===
91 92 93 94 95 96 97 98 |
# File 'lib/ArangoRB_DB.rb', line 91 def self.databases(user: nil) # TESTED user = user.user if user.is_a?(ArangoUser) result = user.nil? ? get("/_api/database") : get("/_api/database/#{user}", @@request) return result.headers["x-arango-async-id"] if @@async == "store" return true if @@async result = result.parsed_response @@verbose ? result : result["error"] ? result["errorMessage"] : result["result"].map{|x| ArangoDatabase.new(database: x)} end |
Instance Method Details
#[](collection_name) ⇒ Object Also known as: collection
36 37 38 |
# File 'lib/ArangoRB_DB.rb', line 36 def [](collection_name) ArangoCollection.new(collection: collection_name, database: @database) end |
#changePropertiesQuery(slowQueryThreshold: nil, enabled: nil, maxSlowQueries: nil, trackSlowQueries: nil, maxQueryStringLength: nil) ⇒ Object
TESTED
151 152 153 154 155 156 157 158 159 160 161 162 |
# File 'lib/ArangoRB_DB.rb', line 151 def changePropertiesQuery(slowQueryThreshold: nil, enabled: nil, maxSlowQueries: nil, trackSlowQueries: nil, maxQueryStringLength: nil) # TESTED body = { "slowQueryThreshold" => slowQueryThreshold, "enabled" => enabled, "maxSlowQueries" => maxSlowQueries, "trackSlowQueries" => trackSlowQueries, "maxQueryStringLength" => maxQueryStringLength }.delete_if{|k,v| v.nil?} request = @@request.merge({ :body => body.to_json }) result = self.class.put("/_db/#{@database}/_api/query/properties", request) self.class.return_result result: result end |
#changePropertyCache(mode: nil, maxResults: nil) ⇒ Object
TESTED
176 177 178 179 180 181 |
# File 'lib/ArangoRB_DB.rb', line 176 def changePropertyCache(mode: nil, maxResults: nil) # TESTED body = { "mode" => mode, "maxResults" => maxResults }.delete_if{|k,v| v.nil?} request = @@request.merge({ :body => body.to_json }) result = self.class.put("/_db/#{@database}/_api/query-cache/properties", request) self.class.return_result result: result end |
#clearCache ⇒ Object
CACHE ===
166 167 168 169 |
# File 'lib/ArangoRB_DB.rb', line 166 def clearCache # TESTED result = self.class.delete("/_db/#{@database}/_api/query-cache", @@request) self.class.return_result result: result, caseTrue: true end |
#clusterInventory(includeSystem: false) ⇒ Object
TESTED
210 211 212 213 214 215 |
# File 'lib/ArangoRB_DB.rb', line 210 def clusterInventory(includeSystem: false) # TESTED query = { "includeSystem": includeSystem } request = @@request.merge({ :query => query }) result = self.class.get("/_db/#{@database}/_api/replication/clusterInventory", request) self.class.return_result result: result end |
#collections(excludeSystem: true) ⇒ Object
TESTED
100 101 102 103 104 105 106 107 108 |
# File 'lib/ArangoRB_DB.rb', line 100 def collections(excludeSystem: true) # TESTED query = { "excludeSystem": excludeSystem }.delete_if{|k,v| v.nil?} request = @@request.merge({ :query => query }) result = self.class.get("/_db/#{@database}/_api/collection", request) return result.headers["x-arango-async-id"] if @@async == "store" return true if @@async result = result.parsed_response @@verbose ? result : result["error"] ? result["errorMessage"] : result["result"].map{|x| ArangoCollection.new(database: @database, collection: x["name"], type: x['type'] == 3 ? 'Edge' : 'Collection')} end |
#create(username: nil, passwd: nil, users: nil) ⇒ Object
POST ===
68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/ArangoRB_DB.rb', line 68 def create(username: nil, passwd: nil, users: nil) # TESTED body = { "name" => @database, "username" => username, "passwd" => passwd, "users" => users } body = body.delete_if{|k,v| v.nil?}.to_json request = @@request.merge({ :body => body }) result = self.class.post("/_api/database", request) return true if @@async @@async == "store" ? result.headers["x-arango-async-id"] : @@verbose ? result.parsed_response : result.parsed_response["error"] ? result.parsed_response["errorMessage"] : self end |
#createFunction(code:, name:, isDeterministic: nil) ⇒ Object
AQL FUNCTION ===
185 186 187 188 189 190 191 192 193 194 |
# File 'lib/ArangoRB_DB.rb', line 185 def createFunction(code:, name:, isDeterministic: nil) # TESTED body = { "code" => code, "name" => name, "isDeterministic" => isDeterministic }.delete_if{|k,v| v.nil?} request = @@request.merge({ :body => body.to_json }) result = self.class.post("/_db/#{@database}/_api/aqlfunction", request) self.class.return_result result: result end |
#currentQuery ⇒ Object
TESTED
130 131 132 133 |
# File 'lib/ArangoRB_DB.rb', line 130 def currentQuery # TESTED result = self.class.get("/_db/#{@database}/_api/query/current", @@request) self.class.return_result result: result end |
#deleteFunction(name:) ⇒ Object
TESTED
196 197 198 199 |
# File 'lib/ArangoRB_DB.rb', line 196 def deleteFunction(name:) # TESTED result = self.class.delete("/_db/#{@database}/_api/aqlfunction/#{name}", @@request) self.class.return_result result: result, caseTrue: true end |
#destroy ⇒ Object
DELETE ===
84 85 86 87 |
# File 'lib/ArangoRB_DB.rb', line 84 def destroy # TESTED result = self.class.delete("/_api/database/#{@database}", @@request) self.class.return_result(result: result, caseTrue: true) end |
#functions ⇒ Object
TESTED
118 119 120 121 |
# File 'lib/ArangoRB_DB.rb', line 118 def functions # TESTED result = self.class.get("/_db/#{@database}/_api/aqlfunction", @@request) self.class.return_result result: result end |
#grant(user: @@user) ⇒ Object
USER ===
348 349 350 351 352 353 354 |
# File 'lib/ArangoRB_DB.rb', line 348 def grant(user: @@user) # TESTED user = user.user if user.is_a?(ArangoUser) body = { "grant" => "rw" }.to_json request = @@request.merge({ :body => body }) result = self.class.put("/_api/user/#{user}/database/#{@database}", request) self.class.return_result result: result, caseTrue: true end |
#graph(graph_name) ⇒ Object
41 42 43 |
# File 'lib/ArangoRB_DB.rb', line 41 def graph(graph_name) ArangoGraph.new(graph: graph_name, database: @database) end |
#graphs ⇒ Object
TESTED
110 111 112 113 114 115 116 |
# File 'lib/ArangoRB_DB.rb', line 110 def graphs # TESTED result = self.class.get("/_db/#{@database}/_api/gharial", @@request) return result.headers["x-arango-async-id"] if @@async == "store" return true if @@async result = result.parsed_response @@verbose ? result : result["error"] ? result["errorMessage"] : result["graphs"].map{|x| ArangoGraph.new(database: @database, graph: x["_key"], edgeDefinitions: x["edgeDefinitions"], orphanCollections: x["orphanCollections"])} end |
#info ⇒ Object
GET ===
47 48 49 50 51 52 53 |
# File 'lib/ArangoRB_DB.rb', line 47 def info # TESTED result = self.class.get("/_db/#{@database}/_api/database/current", @@request) return result.headers["x-arango-async-id"] if @@async == "store" return true if @@async result = result.parsed_response @@verbose ? result : result["error"] ? result["errorMessage"] : result["result"].delete_if{|k,v| k == "error" || k == "code"} end |
#inventory(includeSystem: false) ⇒ Object
REPLICATION ===
203 204 205 206 207 208 |
# File 'lib/ArangoRB_DB.rb', line 203 def inventory(includeSystem: false) # TESTED query = { "includeSystem": includeSystem } request = @@request.merge({ :query => query }) result = self.class.get("/_db/#{@database}/_api/replication/inventory", request) self.class.return_result result: result end |
#killQuery(query:) ⇒ Object
TESTED
145 146 147 148 149 |
# File 'lib/ArangoRB_DB.rb', line 145 def killQuery(query:) # TESTED id = query.is_a?(ArangoAQL) ? query.id : query.is_a?(String) ? query : nil result = self.class.delete("/_db/#{@database}/_api/query/#{id}", @@request) self.class.return_result result: result, caseTrue: true end |
#propertiesQuery ⇒ Object
QUERY ===
125 126 127 128 |
# File 'lib/ArangoRB_DB.rb', line 125 def propertiesQuery # TESTED result = self.class.get("/_db/#{@database}/_api/query/properties", @@request) self.class.return_result result: result end |
#propertyCache ⇒ Object
TESTED
171 172 173 174 |
# File 'lib/ArangoRB_DB.rb', line 171 def propertyCache # TESTED result = self.class.get("/_db/#{@database}/_api/query-cache/properties", @@request) self.class.return_result result: result end |
#retrieve ⇒ Object
TESTED
55 56 57 58 59 60 61 62 63 64 |
# File 'lib/ArangoRB_DB.rb', line 55 def retrieve # TESTED result = self.class.get("/_db/#{@database}/_api/database/current", @@request) return result.headers["x-arango-async-id"] if @@async == "store" return true if @@async result = result.parsed_response @isSystem = result["isSystem"] @path = result["path"] @id = result["id"] @@verbose ? result : result["error"] ? result["errorMessage"] : self end |
#revoke(user: @@user) ⇒ Object
TESTED
356 357 358 359 360 361 362 |
# File 'lib/ArangoRB_DB.rb', line 356 def revoke(user: @@user) # TESTED user = user.user if user.is_a?(ArangoUser) body = { "grant" => "none" }.to_json request = @@request.merge({ :body => body }) result = self.class.put("/_api/user/#{user}/database/#{@database}", request) self.class.return_result result: result, caseTrue: true end |
#slowQuery ⇒ Object
TESTED
135 136 137 138 |
# File 'lib/ArangoRB_DB.rb', line 135 def slowQuery # TESTED result = self.class.get("/_db/#{@database}/_api/query/slow", @@request) self.class.return_result result: result end |
#stopSlowQuery ⇒ Object
TESTED
140 141 142 143 |
# File 'lib/ArangoRB_DB.rb', line 140 def stopSlowQuery # TESTED result = self.class.delete("/_db/#{@database}/_api/query/slow", @@request) self.class.return_result result: result, caseTrue: true end |
#to_hash ⇒ Object Also known as: to_h
RETRIEVE ===
24 25 26 27 28 29 30 31 32 33 |
# File 'lib/ArangoRB_DB.rb', line 24 def to_hash { "database" => @database, "isSystem" => @isSystem, "path" => @path, "id" => @id, "idCache" => @idCache, "endpoint" => "tcp://#{@@server}:#{@@port}" }.delete_if{|k,v| v.nil?} end |