arangodb-driver 3.10.4 → 3.10.4.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE +1 -1
- data/README.md +9 -11
- data/lib/arango/aql.rb +75 -9
- data/lib/arango/cursor.rb +6 -1
- data/lib/arango/database/analyzer.rb +3 -0
- data/lib/arango/database/aql_functions.rb +2 -0
- data/lib/arango/database/aql_queries.rb +2 -0
- data/lib/arango/database/aql_query_cache.rb +2 -0
- data/lib/arango/database/collections.rb +2 -0
- data/lib/arango/database/document_collections.rb +4 -2
- data/lib/arango/database/edge_collections.rb +2 -0
- data/lib/arango/database/foxx_services.rb +3 -0
- data/lib/arango/database/graphs.rb +2 -0
- data/lib/arango/database/http_route.rb +4 -1
- data/lib/arango/database/replication.rb +3 -1
- data/lib/arango/database/stream_transactions.rb +3 -0
- data/lib/arango/database/system_collections.rb +2 -0
- data/lib/arango/database/tasks.rb +2 -0
- data/lib/arango/database/transactions.rb +4 -1
- data/lib/arango/database/user.rb +2 -0
- data/lib/arango/database/view_access.rb +2 -0
- data/lib/arango/database.rb +4 -2
- data/lib/arango/document/base.rb +2 -0
- data/lib/arango/document/class_methods.rb +2 -0
- data/lib/arango/document/instance_methods.rb +2 -0
- data/lib/arango/document/mixin.rb +2 -0
- data/lib/arango/document.rb +3 -0
- data/lib/arango/document_collection/base.rb +2 -0
- data/lib/arango/document_collection/class_methods.rb +2 -0
- data/lib/arango/document_collection/documents.rb +2 -0
- data/lib/arango/document_collection/importing.rb +2 -0
- data/lib/arango/document_collection/indexes.rb +2 -0
- data/lib/arango/document_collection/instance_methods.rb +2 -0
- data/lib/arango/document_collection/mixin.rb +2 -0
- data/lib/arango/document_collection/replication.rb +2 -0
- data/lib/arango/document_collection/user.rb +2 -0
- data/lib/arango/driver/typhoeus.rb +2 -0
- data/lib/arango/edge/base.rb +2 -0
- data/lib/arango/edge/class_methods.rb +2 -0
- data/lib/arango/edge/instance_methods.rb +2 -0
- data/lib/arango/edge/mixin.rb +2 -0
- data/lib/arango/edge_collection/base.rb +2 -0
- data/lib/arango/edge_collection/class_methods.rb +2 -0
- data/lib/arango/edge_collection/edge_acces_2.rb +20 -20
- data/lib/arango/edge_collection/edges.rb +2 -0
- data/lib/arango/edge_collection/instance_methods.rb +2 -0
- data/lib/arango/edge_collection/mixin.rb +2 -0
- data/lib/arango/error.rb +5 -1
- data/lib/arango/error_db.rb +9 -0
- data/lib/arango/foxx.rb +3 -2
- data/lib/arango/graph/base.rb +2 -0
- data/lib/arango/graph/class_methods.rb +5 -2
- data/lib/arango/graph/definition.rb +2 -0
- data/lib/arango/graph/instance_methods.rb +7 -3
- data/lib/arango/graph/mixin.rb +2 -0
- data/lib/arango/helper/database_assignment.rb +2 -0
- data/lib/arango/helper/satisfaction.rb +2 -0
- data/lib/arango/helper/server_assignment.rb +2 -0
- data/lib/arango/index.rb +20 -3
- data/lib/arango/replication.rb +3 -2
- data/lib/arango/request.rb +67 -0
- data/lib/arango/requests/administration/availability.rb +3 -0
- data/lib/arango/requests/administration/cluster_endpoints.rb +3 -0
- data/lib/arango/requests/administration/create_task.rb +3 -0
- data/lib/arango/requests/administration/create_task_id.rb +3 -0
- data/lib/arango/requests/administration/delete_task.rb +3 -0
- data/lib/arango/requests/administration/echo.rb +3 -0
- data/lib/arango/requests/administration/endpoints.rb +3 -0
- data/lib/arango/requests/administration/engine.rb +3 -0
- data/lib/arango/requests/administration/execute.rb +3 -0
- data/lib/arango/requests/administration/get_log_level.rb +3 -0
- data/lib/arango/requests/administration/get_mode.rb +3 -0
- data/lib/arango/requests/administration/get_task.rb +3 -0
- data/lib/arango/requests/administration/list_tasks.rb +2 -0
- data/lib/arango/requests/administration/log.rb +2 -0
- data/lib/arango/requests/administration/metrics.rb +2 -0
- data/lib/arango/requests/administration/reload_routing.rb +2 -0
- data/lib/arango/requests/administration/role.rb +2 -0
- data/lib/arango/requests/administration/server_id.rb +2 -0
- data/lib/arango/requests/administration/set_log_level.rb +2 -0
- data/lib/arango/requests/administration/set_mode.rb +2 -0
- data/lib/arango/requests/administration/statistics.rb +2 -0
- data/lib/arango/requests/administration/statistics_description.rb +2 -0
- data/lib/arango/requests/administration/status.rb +2 -0
- data/lib/arango/requests/administration/target_version.rb +2 -0
- data/lib/arango/requests/administration/time.rb +2 -0
- data/lib/arango/requests/administration/version.rb +2 -0
- data/lib/arango/requests/analyzer/create.rb +3 -0
- data/lib/arango/requests/analyzer/delete.rb +3 -0
- data/lib/arango/requests/analyzer/get.rb +3 -0
- data/lib/arango/requests/analyzer/list.rb +3 -0
- data/lib/arango/requests/aql/clear_query_result_cache.rb +3 -0
- data/lib/arango/requests/aql/create_function.rb +3 -0
- data/lib/arango/requests/aql/current_queries.rb +3 -0
- data/lib/arango/requests/aql/delete_function.rb +4 -0
- data/lib/arango/requests/aql/delete_slow_query_list.rb +3 -0
- data/lib/arango/requests/aql/explain.rb +3 -0
- data/lib/arango/requests/aql/get_query_result_cache_properties.rb +3 -0
- data/lib/arango/requests/aql/get_query_tracking_properties.rb +3 -0
- data/lib/arango/requests/aql/get_slow_query_list.rb +3 -0
- data/lib/arango/requests/aql/kill_query.rb +4 -0
- data/lib/arango/requests/aql/list_functions.rb +2 -0
- data/lib/arango/requests/aql/parse.rb +2 -0
- data/lib/arango/requests/aql/query_result_cache_entries.rb +2 -0
- data/lib/arango/requests/aql/set_query_result_cache_properties.rb +2 -0
- data/lib/arango/requests/aql/set_query_tracking_properties.rb +2 -0
- data/lib/arango/requests/backup/create.rb +3 -0
- data/lib/arango/requests/backup/delete.rb +3 -0
- data/lib/arango/requests/backup/download.rb +3 -0
- data/lib/arango/requests/backup/list.rb +3 -0
- data/lib/arango/requests/backup/restore.rb +2 -0
- data/lib/arango/requests/backup/upload.rb +2 -0
- data/lib/arango/requests/bulk/execute.rb +3 -0
- data/lib/arango/requests/bulk/export.rb +3 -0
- data/lib/arango/requests/bulk/import_document.rb +3 -0
- data/lib/arango/requests/bulk/import_json.rb +3 -0
- data/lib/arango/requests/cluster/health.rb +3 -0
- data/lib/arango/requests/cluster/maintenance.rb +2 -0
- data/lib/arango/requests/cluster/statistics.rb +3 -1
- data/lib/arango/requests/collection/checksum.rb +3 -0
- data/lib/arango/requests/collection/count.rb +3 -0
- data/lib/arango/requests/collection/create.rb +3 -0
- data/lib/arango/requests/collection/delete.rb +3 -0
- data/lib/arango/requests/collection/get.rb +3 -0
- data/lib/arango/requests/collection/get_properties.rb +3 -0
- data/lib/arango/requests/collection/list_all.rb +3 -0
- data/lib/arango/requests/collection/load.rb +2 -0
- data/lib/arango/requests/collection/load_indexes_into_memory.rb +2 -0
- data/lib/arango/requests/collection/recalculate_count.rb +2 -0
- data/lib/arango/requests/collection/rename.rb +2 -0
- data/lib/arango/requests/collection/responsible_shard.rb +2 -0
- data/lib/arango/requests/collection/revision.rb +2 -0
- data/lib/arango/requests/collection/rotate_journal.rb +2 -0
- data/lib/arango/requests/collection/set_properties.rb +2 -0
- data/lib/arango/requests/collection/shards.rb +2 -0
- data/lib/arango/requests/collection/statistics.rb +2 -0
- data/lib/arango/requests/collection/truncate.rb +2 -0
- data/lib/arango/requests/collection/unload.rb +3 -1
- data/lib/arango/requests/cursor/create.rb +3 -0
- data/lib/arango/requests/cursor/delete.rb +3 -0
- data/lib/arango/requests/cursor/next_batch.rb +2 -0
- data/lib/arango/requests/database/create.rb +3 -0
- data/lib/arango/requests/database/delete.rb +3 -0
- data/lib/arango/requests/database/get_information.rb +3 -0
- data/lib/arango/requests/database/list_accessible.rb +3 -0
- data/lib/arango/requests/database/list_all.rb +3 -0
- data/lib/arango/requests/document/create.rb +3 -0
- data/lib/arango/requests/document/create_multiple.rb +3 -0
- data/lib/arango/requests/document/delete.rb +3 -0
- data/lib/arango/requests/document/delete_multiple.rb +3 -0
- data/lib/arango/requests/document/get.rb +3 -0
- data/lib/arango/requests/document/get_multiple.rb +3 -0
- data/lib/arango/requests/document/head.rb +3 -0
- data/lib/arango/requests/document/replace.rb +2 -0
- data/lib/arango/requests/document/replace_multiple.rb +2 -0
- data/lib/arango/requests/document/update.rb +2 -0
- data/lib/arango/requests/document/update_multiple.rb +2 -0
- data/lib/arango/requests/foxx/commit.rb +3 -0
- data/lib/arango/requests/foxx/description.rb +3 -0
- data/lib/arango/requests/foxx/disable_development_mode.rb +3 -0
- data/lib/arango/requests/foxx/download_bundle.rb +3 -0
- data/lib/arango/requests/foxx/enable_development_mode.rb +3 -0
- data/lib/arango/requests/foxx/get_configuration.rb +3 -0
- data/lib/arango/requests/foxx/get_dependencies.rb +3 -0
- data/lib/arango/requests/foxx/install.rb +3 -0
- data/lib/arango/requests/foxx/list_all.rb +3 -0
- data/lib/arango/requests/foxx/list_scripts.rb +2 -0
- data/lib/arango/requests/foxx/readme.rb +2 -0
- data/lib/arango/requests/foxx/replace.rb +2 -0
- data/lib/arango/requests/foxx/replace_configuration.rb +2 -0
- data/lib/arango/requests/foxx/replace_dependencies.rb +2 -0
- data/lib/arango/requests/foxx/run_script.rb +2 -0
- data/lib/arango/requests/foxx/run_tests.rb +2 -0
- data/lib/arango/requests/foxx/swagger.rb +2 -0
- data/lib/arango/requests/foxx/uninstall.rb +2 -0
- data/lib/arango/requests/foxx/update_configuration.rb +2 -0
- data/lib/arango/requests/foxx/update_dependencies.rb +2 -0
- data/lib/arango/requests/foxx/upgrade.rb +3 -1
- data/lib/arango/requests/graph/add_edge_definition.rb +2 -0
- data/lib/arango/requests/graph/add_vertex_collection.rb +2 -0
- data/lib/arango/requests/graph/create.rb +3 -0
- data/lib/arango/requests/graph/create_edge.rb +3 -0
- data/lib/arango/requests/graph/create_vertex.rb +3 -0
- data/lib/arango/requests/graph/delete.rb +3 -0
- data/lib/arango/requests/graph/delete_edge.rb +3 -0
- data/lib/arango/requests/graph/delete_vertex.rb +3 -0
- data/lib/arango/requests/graph/get.rb +3 -0
- data/lib/arango/requests/graph/get_edge.rb +3 -0
- data/lib/arango/requests/graph/get_vertex.rb +3 -0
- data/lib/arango/requests/graph/list_all.rb +3 -0
- data/lib/arango/requests/graph/list_edge_definitions.rb +2 -0
- data/lib/arango/requests/graph/list_vertex_collections.rb +2 -0
- data/lib/arango/requests/graph/remove_edge_definition.rb +2 -0
- data/lib/arango/requests/graph/remove_vertex_collection.rb +2 -0
- data/lib/arango/requests/graph/replace_edge.rb +2 -0
- data/lib/arango/requests/graph/replace_edge_definition.rb +2 -0
- data/lib/arango/requests/graph/replace_vertex.rb +2 -0
- data/lib/arango/requests/graph/update_edge.rb +2 -0
- data/lib/arango/requests/graph/update_vertex.rb +2 -0
- data/lib/arango/requests/graph_edges/read.rb +2 -0
- data/lib/arango/requests/graph_traversal/execute.rb +3 -0
- data/lib/arango/requests/index/create.rb +3 -0
- data/lib/arango/requests/index/delete.rb +3 -0
- data/lib/arango/requests/index/get.rb +3 -0
- data/lib/arango/requests/index/list_all.rb +3 -0
- data/lib/arango/requests/job/cancel.rb +3 -0
- data/lib/arango/requests/job/delete.rb +3 -0
- data/lib/arango/requests/job/get.rb +3 -0
- data/lib/arango/requests/job/list.rb +3 -0
- data/lib/arango/requests/job/result.rb +2 -0
- data/lib/arango/requests/replication/create_dump_batch.rb +3 -0
- data/lib/arango/requests/replication/delete_dump_batch.rb +3 -0
- data/lib/arango/requests/replication/get_applier_config.rb +3 -0
- data/lib/arango/requests/replication/get_applier_state.rb +3 -0
- data/lib/arango/requests/replication/get_cluster_inventory.rb +3 -0
- data/lib/arango/requests/replication/get_dump.rb +3 -0
- data/lib/arango/requests/replication/get_inventory.rb +3 -0
- data/lib/arango/requests/replication/get_last_tick.rb +3 -0
- data/lib/arango/requests/replication/get_log_first_tick.rb +3 -0
- data/lib/arango/requests/replication/get_log_follow.rb +3 -0
- data/lib/arango/requests/replication/get_logger_state.rb +3 -0
- data/lib/arango/requests/replication/get_logger_tick_ranges.rb +3 -0
- data/lib/arango/requests/replication/get_server_id.rb +3 -0
- data/lib/arango/requests/replication/get_tail.rb +3 -0
- data/lib/arango/requests/replication/get_tick_ranges.rb +3 -0
- data/lib/arango/requests/replication/make_slave.rb +2 -0
- data/lib/arango/requests/replication/prolong_dump_batch.rb +2 -0
- data/lib/arango/requests/replication/set_applier_config.rb +2 -0
- data/lib/arango/requests/replication/start_applier.rb +2 -0
- data/lib/arango/requests/replication/stop_applier.rb +2 -0
- data/lib/arango/requests/replication/synchronize.rb +2 -0
- data/lib/arango/requests/task/all.rb +2 -0
- data/lib/arango/requests/task/create.rb +3 -0
- data/lib/arango/requests/task/create_with_id.rb +3 -0
- data/lib/arango/requests/task/delete.rb +3 -0
- data/lib/arango/requests/task/get.rb +3 -0
- data/lib/arango/requests/transaction/begin.rb +3 -0
- data/lib/arango/requests/transaction/commit.rb +3 -0
- data/lib/arango/requests/transaction/delete.rb +3 -0
- data/lib/arango/requests/transaction/execute.rb +3 -0
- data/lib/arango/requests/transaction/list_running.rb +2 -0
- data/lib/arango/requests/transaction/status.rb +2 -0
- data/lib/arango/requests/user/clear_collection_access_level.rb +3 -0
- data/lib/arango/requests/user/clear_database_access_level.rb +3 -0
- data/lib/arango/requests/user/create.rb +3 -0
- data/lib/arango/requests/user/delete.rb +3 -0
- data/lib/arango/requests/user/get.rb +3 -0
- data/lib/arango/requests/user/get_collection_access_level.rb +3 -0
- data/lib/arango/requests/user/get_database_access_level.rb +3 -0
- data/lib/arango/requests/user/list_all.rb +3 -1
- data/lib/arango/requests/user/list_databases.rb +2 -0
- data/lib/arango/requests/user/replace.rb +2 -0
- data/lib/arango/requests/user/set_collection_access_level.rb +2 -0
- data/lib/arango/requests/user/set_database_access_level.rb +2 -0
- data/lib/arango/requests/user/update.rb +2 -0
- data/lib/arango/requests/view/create_search_view.rb +3 -0
- data/lib/arango/requests/view/delete.rb +4 -1
- data/lib/arango/requests/view/get.rb +3 -0
- data/lib/arango/requests/view/get_properties.rb +3 -0
- data/lib/arango/requests/view/list_all.rb +2 -0
- data/lib/arango/requests/view/rename.rb +2 -0
- data/lib/arango/requests/view/set_search_view_properties.rb +3 -1
- data/lib/arango/requests/view/update_search_view_properties.rb +2 -0
- data/lib/arango/requests/wal/flush.rb +3 -0
- data/lib/arango/requests/wal/get_properties.rb +4 -0
- data/lib/arango/requests/wal/set_properties.rb +2 -0
- data/lib/arango/requests/wal/transactions.rb +2 -0
- data/lib/arango/result.rb +4 -0
- data/lib/arango/search_view.rb +5 -1
- data/lib/arango/server/administration.rb +5 -1
- data/lib/arango/server/agency.rb +2 -0
- data/lib/arango/server/async.rb +3 -1
- data/lib/arango/server/databases.rb +2 -0
- data/lib/arango/server/monitoring.rb +2 -0
- data/lib/arango/server/opal_support.rb +2 -0
- data/lib/arango/server/tasks.rb +2 -0
- data/lib/arango/server/user.rb +2 -0
- data/lib/arango/server.rb +3 -2
- data/lib/arango/task.rb +3 -2
- data/lib/arango/transaction.rb +3 -2
- data/lib/arango/user.rb +78 -39
- data/lib/arango/version.rb +2 -1
- data/lib/arango/view/basics.rb +6 -0
- data/lib/arango/view.rb +3 -2
- data/lib/arango.rb +42 -0
- data/lib/arangodb-driver.rb +2 -7
- metadata +2 -46
- data/arango_opal.js +0 -25855
- data/lib/arango/document_collection/vertices.rb +0 -0
@@ -1,8 +1,11 @@
|
|
1
1
|
module Arango
|
2
|
+
# Arango Requests
|
2
3
|
module Requests
|
4
|
+
# View Requests
|
3
5
|
module View
|
6
|
+
# API: DELETE {/dbcontext}/_api/view/{name}
|
4
7
|
class Delete < Arango::Request
|
5
|
-
self.request_method = :
|
8
|
+
self.request_method = :delete
|
6
9
|
|
7
10
|
self.uri_template = '{/dbcontext}/_api/view/{name}'
|
8
11
|
|
@@ -1,8 +1,10 @@
|
|
1
1
|
module Arango
|
2
2
|
module Requests
|
3
|
+
# View Requests
|
3
4
|
module View
|
5
|
+
# API: PUT {/dbcontext}/_api/view/{name}/properties#ArangoSearch
|
4
6
|
class SetSearchViewProperties < Arango::Request
|
5
|
-
self.request_method = :
|
7
|
+
self.request_method = :put
|
6
8
|
|
7
9
|
self.uri_template = '{/dbcontext}/_api/view/{name}/properties#ArangoSearch'
|
8
10
|
|
@@ -1,6 +1,9 @@
|
|
1
1
|
module Arango
|
2
|
+
# Arango Requests
|
2
3
|
module Requests
|
4
|
+
# Wal Requests
|
3
5
|
module Wal
|
6
|
+
# API: GET /_admin/wal/properties
|
4
7
|
class GetProperties < Arango::Request
|
5
8
|
self.request_method = :get
|
6
9
|
|
@@ -8,6 +11,7 @@ module Arango
|
|
8
11
|
|
9
12
|
code 200, :success
|
10
13
|
code 405, "Invalid HTTP method!"
|
14
|
+
code 501, "Invalid: called on cluster coordinator"
|
11
15
|
end
|
12
16
|
end
|
13
17
|
end
|
data/lib/arango/result.rb
CHANGED
data/lib/arango/search_view.rb
CHANGED
@@ -1,5 +1,9 @@
|
|
1
1
|
module Arango
|
2
|
+
#
|
3
|
+
# Arango Server
|
4
|
+
#
|
2
5
|
class Server
|
6
|
+
# Arango Server Administration
|
3
7
|
module Administration
|
4
8
|
# Check availability of the server.
|
5
9
|
# @return [Boolean]
|
@@ -268,7 +272,7 @@ module Arango
|
|
268
272
|
# A value of 0 means that write-throttling will not be triggered.
|
269
273
|
# return [Arango::Result]
|
270
274
|
def wal_properties
|
271
|
-
result =
|
275
|
+
result = Arango::Requests::Wal::GetProperties.execute(server: self)
|
272
276
|
raise "WAL properties not available." if result.response_code >= 500
|
273
277
|
result
|
274
278
|
end
|
data/lib/arango/server/agency.rb
CHANGED
data/lib/arango/server/async.rb
CHANGED
data/lib/arango/server/tasks.rb
CHANGED
data/lib/arango/server/user.rb
CHANGED
data/lib/arango/server.rb
CHANGED
data/lib/arango/task.rb
CHANGED
data/lib/arango/transaction.rb
CHANGED
data/lib/arango/user.rb
CHANGED
@@ -1,4 +1,7 @@
|
|
1
1
|
module Arango
|
2
|
+
#
|
3
|
+
# Arango User
|
4
|
+
#
|
2
5
|
class User
|
3
6
|
include Arango::Helper::Satisfaction
|
4
7
|
|
@@ -11,24 +14,45 @@ module Arango
|
|
11
14
|
result.map { |u| self.new(server: server, **u) }
|
12
15
|
end
|
13
16
|
|
17
|
+
# Create new user
|
18
|
+
# @param name [String]
|
19
|
+
# @param password [String]
|
20
|
+
# @param extra
|
21
|
+
# @param server [Arango::Server], defaults to {current_server}
|
22
|
+
# @return [Arango::User]
|
14
23
|
def create(name:, password: "", extra: {}, active: nil, server: Arango.current_server)
|
15
24
|
self.new.create(server: server, password: password, extra: extra, active: active)
|
16
25
|
end
|
17
26
|
|
27
|
+
# Get user by name
|
28
|
+
# @param name [String]
|
29
|
+
# @param server [Arango::Server], defaults to {current_server}
|
30
|
+
# @return [Arango::User]
|
18
31
|
def get(name:, server: Arango.current_server)
|
19
32
|
result = Arango::Requests::User::Get.execute(server: server, args: { user: name })
|
20
33
|
self.new(server: server, **result)
|
21
34
|
end
|
22
35
|
|
36
|
+
# List users
|
37
|
+
# # @param server [Arango::Server], defaults to {current_server}
|
38
|
+
# @return [Array] of user names
|
23
39
|
def list(server: Arango.current_server)
|
24
|
-
result = Arango::Requests::User::List.
|
40
|
+
result = Arango::Requests::User::List.execute(server: server)
|
25
41
|
result.map { |u| u.name }
|
26
42
|
end
|
27
43
|
|
44
|
+
# Delete user by name
|
45
|
+
# @param name [String]
|
46
|
+
# @param server [Arango::Server], defaults to {current_server}
|
47
|
+
# @return [Arango::Result]
|
28
48
|
def drop(name:, server: Arango.current_server)
|
29
|
-
Arango::Requests::User::Delete.
|
49
|
+
Arango::Requests::User::Delete.execute(server: server, args: { user: name })
|
30
50
|
end
|
31
51
|
|
52
|
+
# Check if user exists
|
53
|
+
# @param name [String]
|
54
|
+
# @param server [Arango::Server], defaults to {current_server}
|
55
|
+
# @return [Boolean]
|
32
56
|
def exists?(name:, server: Arango.current_server)
|
33
57
|
!!Arango::Requests::User::Get.execute(server: server, args: { user: name })
|
34
58
|
rescue
|
@@ -36,41 +60,20 @@ module Arango
|
|
36
60
|
end
|
37
61
|
end
|
38
62
|
|
39
|
-
def initialize(server:, password: "", name:, extra: {}, active: nil)
|
40
|
-
@server = server
|
41
|
-
@password = password
|
42
|
-
@name = name
|
43
|
-
@extra = extra
|
44
|
-
@active = active
|
45
|
-
end
|
46
|
-
|
47
63
|
attr_accessor :name, :extra, :active
|
48
64
|
attr_writer :password
|
49
65
|
attr_reader :server
|
50
66
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
passwd: password,
|
55
|
-
extra: extra,
|
56
|
-
active: active
|
57
|
-
}
|
58
|
-
Arango::Requests::User::Create.new(server: server, body: body).execute
|
59
|
-
self
|
60
|
-
end
|
61
|
-
|
62
|
-
def reload
|
63
|
-
result = @server.request("GET", "_api/user/#{@name}", body: body)
|
64
|
-
return_element(result)
|
65
|
-
end
|
66
|
-
|
67
|
+
#
|
68
|
+
# Replace user record
|
69
|
+
#
|
67
70
|
def replace(password: @password, active: @active, extra: @extra)
|
68
71
|
body = {
|
69
72
|
passwd: password,
|
70
73
|
active: active,
|
71
74
|
extra: extra
|
72
75
|
}
|
73
|
-
result =
|
76
|
+
result = Arango::Requests::User::Replace.execute(body: body)
|
74
77
|
@password = password
|
75
78
|
return_element(result)
|
76
79
|
end
|
@@ -81,31 +84,55 @@ module Arango
|
|
81
84
|
active: active,
|
82
85
|
extra: extra
|
83
86
|
}
|
84
|
-
result =
|
87
|
+
result = Arango::Requests::User::Update.execute(body: body)
|
85
88
|
@password = password
|
86
89
|
return_element(result)
|
87
90
|
end
|
88
91
|
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
+
# Create new user
|
93
|
+
def initialize(server:, password: "", name:, extra: {}, active: nil)
|
94
|
+
@server = server
|
95
|
+
@password = password
|
96
|
+
@name = name
|
97
|
+
@extra = extra
|
98
|
+
@active = active
|
92
99
|
end
|
93
100
|
|
94
|
-
|
101
|
+
def create
|
102
|
+
body = {
|
103
|
+
user: name,
|
104
|
+
passwd: password,
|
105
|
+
extra: extra,
|
106
|
+
active: active
|
107
|
+
}
|
108
|
+
Arango::Requests::User::Create.new(server: server, body: body).execute
|
109
|
+
self
|
110
|
+
end
|
95
111
|
|
112
|
+
# Grant access to database
|
113
|
+
# @param grant [String] one of `rw`, `ro`, `none`
|
114
|
+
# @param database [String] or [Arango::Database]
|
115
|
+
# @return
|
96
116
|
def add_database_access(grant:, database:)
|
97
117
|
satisfy_category?(grant, %w[rw ro none])
|
98
118
|
satisfy_class_or_string?(database, Arango::Database)
|
99
119
|
database = database.name if database.is_a?(Arango::Database)
|
100
120
|
body = { grant: grant }
|
101
|
-
result =
|
121
|
+
result = Arango::Requests::User::SetDatabaseAccessLevel.execute(user: self.name, database: database, body: body)
|
102
122
|
return return_directly?(result) ? result : result[database.to_sym]
|
103
123
|
end
|
104
124
|
|
125
|
+
# Grant read-write access to database
|
126
|
+
# @param database [String] or [Arango::Database]
|
105
127
|
def grant(database:)
|
106
128
|
add_database_access(grant: "rw", database: database)
|
107
129
|
end
|
108
130
|
|
131
|
+
# Grant access to database collection
|
132
|
+
# @param grant [String] one of `rw`, `ro`, `none`
|
133
|
+
# @param database [String] or [Arango::Database]
|
134
|
+
# @param database [String] or [Arango::DocumentCollection]
|
135
|
+
# @return
|
109
136
|
def add_collection_access(grant:, database:, collection:)
|
110
137
|
satisfy_category?(grant, %w[rw ro none])
|
111
138
|
satisfy_class_or_string?(database, Arango::Database)
|
@@ -113,47 +140,59 @@ module Arango
|
|
113
140
|
database = database.name if database.is_a?(Arango::Database)
|
114
141
|
collection = collection.name if collection.is_a?(Arango::DocumentCollection)
|
115
142
|
body = { grant: grant }
|
116
|
-
result =
|
143
|
+
result = Arango::Requests::User::SetCollectionAccessLevel.execute(user: self.name, database: database, collection: collection, body: body)
|
117
144
|
return return_directly?(result) ? result : result[:"#{database}/#{collection}"]
|
118
145
|
end
|
119
146
|
|
147
|
+
# Revoke user access to database
|
148
|
+
# @param database [String] or [Arango::Database]
|
120
149
|
def revoke_database_access(database:)
|
121
150
|
satisfy_class_or_string?(database, Arango::Database)
|
122
151
|
database = database.name if database.is_a?(Arango::Database)
|
123
|
-
result =
|
152
|
+
result = Arango::Requests::User::ClearDatabaseAccessLevel.execute(user: self.name, database: database)
|
124
153
|
return return_directly?(result) ? result : true
|
125
154
|
end
|
126
155
|
alias revoke revoke_database_access
|
127
156
|
|
157
|
+
# Revoke user access to database collection
|
158
|
+
# @param database [String] or [Arango::Database]
|
159
|
+
# @param database [String] or [Arango::DocumentCollection]
|
128
160
|
def revoke_collection_access(database:, collection:)
|
129
161
|
satisfy_class_or_string?(database, Arango::Database)
|
130
162
|
satisfy_module_or_string?(collection, Arango::DocumentCollection)
|
131
163
|
database = database.name if database.is_a?(Arango::Database)
|
132
164
|
collection = collection.name if collection.is_a?(Arango::DocumentCollection)
|
133
|
-
result =
|
165
|
+
result = Arango::Requests::User::ClearCollectionAccessLevel.execute(user: self.name, database: database, collection: collection)
|
134
166
|
return return_directly?(result) ? result : true
|
135
167
|
end
|
136
168
|
|
169
|
+
# List databases a user has access to
|
170
|
+
# @param: full
|
137
171
|
def list_access(full: nil)
|
138
172
|
query = { full: full }
|
139
|
-
result =
|
173
|
+
result = Arango::Requests::User::ListDatabases.execute(body: query)
|
140
174
|
return return_directly?(result) ? result : result[:result]
|
141
175
|
end
|
142
176
|
alias databases list_access
|
143
177
|
|
178
|
+
# Get user access level for database
|
179
|
+
# @param database [String] or [Arango::Database]
|
144
180
|
def database_access(database:)
|
145
181
|
satisfy_class_or_string?(database, Arango::Database)
|
146
182
|
database = database.name if database.is_a?(Arango::Database)
|
147
|
-
result =
|
183
|
+
result = Arango::Requests::User::GetDatabaseAccessLevel.execute(name: self.name, database: database)
|
148
184
|
return return_directly?(result) ? result : result[:result]
|
149
185
|
end
|
150
186
|
|
187
|
+
# Get user access level for database collection
|
188
|
+
# @param database [String] or [Arango::Database]
|
189
|
+
# @param database [String] or [Arango::DocumentCollection]
|
151
190
|
def collection_access(database:, collection:)
|
152
191
|
satisfy_class_or_string?(database, Arango::Database)
|
153
192
|
satisfy_module_or_string?(collection, Arango::DocumentCollection::Mixin)
|
154
193
|
database = database.name if database.is_a?(Arango::Database)
|
155
194
|
collection = collection.name if collection.is_a?(Arango::DocumentCollection)
|
156
|
-
result =
|
195
|
+
result = Arango::Requests::User::GetCollectionAccessLevel.execute(name: self.name, database: database, collection: collection)
|
157
196
|
return return_directly?(result) ? result : result[:result]
|
158
197
|
end
|
159
198
|
end
|
data/lib/arango/version.rb
CHANGED
data/lib/arango/view/basics.rb
CHANGED
data/lib/arango/view.rb
CHANGED
data/lib/arango.rb
CHANGED
@@ -1,31 +1,64 @@
|
|
1
|
+
#
|
2
|
+
# Arango toplevel module
|
3
|
+
#
|
4
|
+
|
1
5
|
module Arango
|
2
6
|
class << self
|
7
|
+
# get current backend driver
|
8
|
+
# @return [Arango::Driver]
|
3
9
|
def driver
|
4
10
|
@driver_class
|
5
11
|
end
|
6
12
|
|
13
|
+
# set backend driver
|
14
|
+
# @param dc [Arango::Driver]
|
7
15
|
def driver=(dc)
|
8
16
|
@driver_class = dc
|
9
17
|
end
|
10
18
|
|
19
|
+
# get current server
|
20
|
+
# @return [Arango::Server]
|
11
21
|
def current_server
|
12
22
|
@current_server
|
13
23
|
end
|
14
24
|
|
25
|
+
# get current server's database
|
26
|
+
# @return [Arango::Database]
|
15
27
|
def current_database
|
16
28
|
@current_server.current_database
|
17
29
|
end
|
18
30
|
|
31
|
+
# set current server
|
32
|
+
# @param s [Arango::Server]
|
19
33
|
def current_server=(s)
|
20
34
|
@current_server = s
|
21
35
|
end
|
22
36
|
|
37
|
+
# connect to database of current server
|
38
|
+
# sets current_database
|
39
|
+
# @param username [String] defaults to 'root'
|
40
|
+
# @param password [String]
|
41
|
+
# @param host [String] defaults to 'localhost'
|
42
|
+
# @param port [String] defaults to '8529'
|
43
|
+
# @param tls [Boolean] 'true' for a secure (https) connection, default to false
|
44
|
+
# @param database [String] name of database to connect to
|
45
|
+
# @param driver_options [Hash] driver specific options, defaults to nil
|
46
|
+
# @return [Arango::Database]
|
23
47
|
def connect_to_database(username: "root", password:, host: "localhost", port: "8529", tls: false, database:, driver_options: nil)
|
24
48
|
server = connect_to_server(username: username, password: password, host: host, port: port, tls: false, driver_options: driver_options)
|
25
49
|
database = server.get_database(database)
|
26
50
|
server.current_database = database
|
27
51
|
end
|
28
52
|
|
53
|
+
# connect to server
|
54
|
+
# sets current_server (if not set !)
|
55
|
+
# @param username [String] defaults to 'root'
|
56
|
+
# @param password [String]
|
57
|
+
# @param host [String] defaults to 'localhost'
|
58
|
+
# @param port [String] defaults to '8529'
|
59
|
+
# @param tls [Boolean] 'true' for a secure (https) connection, default to false
|
60
|
+
# @param driver_options [Hash] driver specific options, defaults to nil
|
61
|
+
# @return [Arango::Server]
|
29
62
|
def connect_to_server(username: "root", password:, host: "localhost", port: "8529", tls: false, driver_options: nil)
|
30
63
|
server = Arango::Server.new(username: username, password: password, host: host, port: port, tls: tls, driver_options: driver_options)
|
31
64
|
@current_server = server unless @current_server
|
@@ -33,6 +66,9 @@ module Arango
|
|
33
66
|
end
|
34
67
|
end
|
35
68
|
|
69
|
+
# define batch_ variant
|
70
|
+
# @param target_class [Class]
|
71
|
+
# @param method_name [String]
|
36
72
|
def self.request_class_method(target_class, method_name, &block)
|
37
73
|
promise_method_name = "batch_#{method_name}".to_sym
|
38
74
|
target_class.define_singleton_method(method_name) do |*args|
|
@@ -59,6 +95,9 @@ module Arango
|
|
59
95
|
end
|
60
96
|
end
|
61
97
|
|
98
|
+
# define batch_ variant
|
99
|
+
# @param target_class [Class]
|
100
|
+
# @param method_name [String]
|
62
101
|
def self.multi_request_class_method(target_class, method_name, &block)
|
63
102
|
promise_method_name = "batch_#{method_name}".to_sym
|
64
103
|
target_class.define_singleton_method(method_name) do |*args|
|
@@ -89,6 +128,9 @@ module Arango
|
|
89
128
|
end
|
90
129
|
end
|
91
130
|
|
131
|
+
# define batch_ variant
|
132
|
+
# @param target_class [Class]
|
133
|
+
# @param method_name [String]
|
92
134
|
def self.aql_request_class_method(target_class, method_name, &block)
|
93
135
|
promise_method_name = "batch_#{method_name}".to_sym
|
94
136
|
target_class.define_singleton_method(method_name) do |*args|
|