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,5 +1,7 @@
|
|
1
1
|
module Arango
|
2
|
+
# Arango EdgeCollection
|
2
3
|
module EdgeCollection
|
4
|
+
# Arango EdgeCollection ClassMethods
|
3
5
|
module ClassMethods
|
4
6
|
def new(database: Arango.current_database, graph: nil,
|
5
7
|
name:, id: nil, globally_unique_id: nil, is_system: false, status: nil, type: :edge,
|
@@ -1,7 +1,11 @@
|
|
1
1
|
module Arango
|
2
|
+
# Arango EdgeCollection
|
2
3
|
module Collection
|
4
|
+
# Arango EdgeCollection EdgeAccess
|
3
5
|
module EdgeAccess
|
4
|
-
#
|
6
|
+
#
|
7
|
+
# Set the graph of the EdgeAccess instance
|
8
|
+
#
|
5
9
|
def graph=(graph)
|
6
10
|
satisfy_module_or_nil?(graph, Arango::Graph::Mixin)
|
7
11
|
if !graph.nil? && graph.database.name != @database.name
|
@@ -12,37 +16,41 @@ module Arango
|
|
12
16
|
end
|
13
17
|
alias assign_graph graph=
|
14
18
|
|
19
|
+
#
|
20
|
+
# Add a vertex to the graph
|
21
|
+
# If no graph is defined, create a Document
|
22
|
+
#
|
23
|
+
# @return: Vertex or Document
|
24
|
+
#
|
15
25
|
def vertex(name: nil, body: {}, rev: nil, from: nil, to: nil)
|
16
26
|
if @type == :edge
|
17
27
|
raise Arango::Error.new err: :is_a_edge_collection, data: {type: @type}
|
18
28
|
end
|
19
29
|
if @graph.nil?
|
20
|
-
Arango::Document::Base.new(name: name, body: body, rev: rev, collection: self)
|
30
|
+
Arango::Document::Base.new(name: name, body: body, rev: rev, collection: self, from: from, to: to)
|
21
31
|
else
|
22
|
-
Arango::Vertex.new(name: name, body: body, rev: rev, collection: self)
|
32
|
+
Arango::Vertex.new(name: name, body: body, rev: rev, collection: self, from: from, to: to)
|
23
33
|
end
|
24
34
|
end
|
25
35
|
|
36
|
+
#
|
37
|
+
# Add an edge to the graph
|
38
|
+
# If no graph is defined, create a Document
|
39
|
+
#
|
40
|
+
# @return: Vertex or Document
|
41
|
+
#
|
26
42
|
def edge(name: nil, body: {}, rev: nil, from: nil, to: nil)
|
27
43
|
if @type == :document
|
28
44
|
raise Arango::Error.new err: :is_a_document_collection, data: {type: @type}
|
29
45
|
end
|
30
46
|
if @graph.nil?
|
31
|
-
Arango::Document::Base.new(name: name, body: body, rev: rev, collection: self)
|
47
|
+
Arango::Document::Base.new(name: name, body: body, rev: rev, from: from, to: to, collection: self)
|
32
48
|
else
|
33
49
|
Arango::Edge::Base.new(name: name, body: body, rev: rev, from: from, to: to,
|
34
50
|
collection: self)
|
35
51
|
end
|
36
52
|
end
|
37
53
|
|
38
|
-
def edge_exists?
|
39
|
-
|
40
|
-
end
|
41
|
-
|
42
|
-
def edge(name: nil, body: {}, rev: nil, from: nil, to: nil)
|
43
|
-
Arango::Document::Base.new(name: name, collection: self, body: body, rev: rev,
|
44
|
-
from: from, to: to)
|
45
|
-
end
|
46
54
|
|
47
55
|
def edges(type: "edge") # "path", "id", "key"
|
48
56
|
@return_edge = false
|
@@ -63,14 +71,6 @@ module Arango
|
|
63
71
|
end
|
64
72
|
end
|
65
73
|
|
66
|
-
def insert_edge
|
67
|
-
|
68
|
-
end
|
69
|
-
|
70
|
-
def insert_edges
|
71
|
-
|
72
|
-
end
|
73
|
-
|
74
74
|
def replace_edge
|
75
75
|
|
76
76
|
end
|
@@ -1,5 +1,7 @@
|
|
1
1
|
module Arango
|
2
|
+
# Arango EdgeCollection
|
2
3
|
module EdgeCollection
|
4
|
+
# Arango EdgeCollection Edges
|
3
5
|
module Edges
|
4
6
|
def new_edge(key: nil, attributes: {}, from: nil, to: nil, wait_for_sync: nil)
|
5
7
|
Arango::Edge::Base.new(key: key, attributes: attributes, from: from, to: to, edge_collection: self, wait_for_sync: wait_for_sync)
|
@@ -1,8 +1,10 @@
|
|
1
1
|
module Arango
|
2
|
+
# Arango EdgeCollection
|
2
3
|
module EdgeCollection
|
3
4
|
STATES = %i[unknown new_born unloaded loaded being_unloaded deleted loading] # do not sort, index is used
|
4
5
|
TYPES = %i[unknown unknown document edge] # do not sort, index is used
|
5
6
|
|
7
|
+
# Arango EdgeCollection Mixin
|
6
8
|
module Mixin
|
7
9
|
#@!visibility private
|
8
10
|
def self.included(base)
|
data/lib/arango/error.rb
CHANGED
@@ -1,7 +1,11 @@
|
|
1
|
-
# === ERROR ===
|
2
1
|
|
3
2
|
module Arango
|
3
|
+
#
|
4
|
+
# Arango Error
|
5
|
+
#
|
4
6
|
class Error < StandardError
|
7
|
+
# Hash of Arango-specific error codes and their respective messages
|
8
|
+
# Used if an error condition cannot be (fully) expressed by an http status code
|
5
9
|
ARANGODB_ERRORS = {
|
6
10
|
no_other_aql_next: {
|
7
11
|
code: 10001, message: "No other values with AQL next"
|
data/lib/arango/error_db.rb
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
module Arango
|
2
|
+
#
|
3
|
+
# Arango ErrorDB
|
4
|
+
#
|
2
5
|
class ErrorDB < Arango::Error
|
6
|
+
#
|
7
|
+
# Create database error representation
|
8
|
+
#
|
3
9
|
def initialize(message:, code:, data:, error_num:, action: nil, url: nil, request:)
|
4
10
|
@message = message
|
5
11
|
@code = code
|
@@ -11,6 +17,9 @@ module Arango
|
|
11
17
|
end
|
12
18
|
attr_reader :action, :code, :data, :error_num, :message, :request, :url
|
13
19
|
|
20
|
+
#
|
21
|
+
# convert to hash
|
22
|
+
# @return [Hash]
|
14
23
|
def to_h
|
15
24
|
{
|
16
25
|
action: @action,
|
data/lib/arango/foxx.rb
CHANGED
data/lib/arango/graph/base.rb
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
module Arango
|
2
|
+
# Arango Graph
|
2
3
|
module Graph
|
4
|
+
# Arango Graph ClassMethods
|
3
5
|
module ClassMethods
|
6
|
+
# Create Arango::Graph from hash
|
4
7
|
def from_h(graph_hash, database: Arango.current_database)
|
5
8
|
graph_hash = graph_hash.transform_keys { |k| k.to_s.underscore.to_sym }
|
6
9
|
graph_hash.merge!(database: database) unless graph_hash.has_key?(:database)
|
@@ -20,10 +23,10 @@ module Arango
|
|
20
23
|
from_h(hash, database: database)
|
21
24
|
end
|
22
25
|
|
26
|
+
# extend Arango::Graph with class methods
|
23
27
|
def self.extended(base)
|
24
28
|
|
25
29
|
# Retrieves all graphs from the database.
|
26
|
-
# @param exclude_system [Boolean] Optional, default true, exclude system graphs.
|
27
30
|
# @param database [Arango::Database]
|
28
31
|
# @return [Array<Arango::Graph::Base>]
|
29
32
|
def all (database: Arango.current_database)
|
@@ -42,7 +45,6 @@ module Arango
|
|
42
45
|
end
|
43
46
|
|
44
47
|
# Retrieves a list of all graphs.
|
45
|
-
# @param exclude_system [Boolean] Optional, default true, exclude system graphs.
|
46
48
|
# @param database [Arango::Database]
|
47
49
|
# @return [Array<String>] List of graph names.
|
48
50
|
def list (database: Arango.current_database)
|
@@ -70,6 +72,7 @@ module Arango
|
|
70
72
|
end
|
71
73
|
end
|
72
74
|
|
75
|
+
# Create Graph in database
|
73
76
|
def create(is_smart: @is_smart, smart_graph_attribute: @smart_graph_attribute,
|
74
77
|
number_of_shards: @number_of_shards)
|
75
78
|
body = {
|
@@ -1,12 +1,16 @@
|
|
1
1
|
module Arango
|
2
|
+
# Arango Graph
|
2
3
|
module Graph
|
4
|
+
# Arango Graph InstanceMethods
|
3
5
|
module InstanceMethods
|
4
6
|
|
5
7
|
# Instantiate a new collection.
|
6
|
-
# For param description see the attributes descriptions. All params except name
|
8
|
+
# For param description see the attributes descriptions. All params except name are optional.
|
7
9
|
# @param name [String] The name of the collection.
|
8
|
-
# @param database [Arango::Database]
|
9
|
-
# @param
|
10
|
+
# @param database [Arango::Database], defaults to Arango.current_database
|
11
|
+
# @param edge_definitions [Array] of edge definitions
|
12
|
+
# @param is_smart [Boolean], optional, defaults to false
|
13
|
+
# @param properties [Hash]
|
10
14
|
# @return [Arango::Graph]
|
11
15
|
def initialize(database: Arango.current_database,
|
12
16
|
name:, edge_definitions: [], is_smart: false,
|
data/lib/arango/graph/mixin.rb
CHANGED
data/lib/arango/index.rb
CHANGED
@@ -1,9 +1,13 @@
|
|
1
|
-
# === INDEXES ===
|
2
|
-
|
3
1
|
module Arango
|
2
|
+
#
|
3
|
+
# Arango Index
|
4
|
+
#
|
4
5
|
class Index
|
5
6
|
include Arango::Helper::Satisfaction
|
6
7
|
include Arango::Helper::DatabaseAssignment
|
8
|
+
# list indexes defined for collection
|
9
|
+
# @param collection [Arango::Collection]
|
10
|
+
# @return [Array of Arango::Index], or `nil` on error
|
7
11
|
def self.list(collection:)
|
8
12
|
params = { collection: collection.name }
|
9
13
|
result = Arango::Requests::Index::ListAll.execute(server: collection.database.server, params: params)
|
@@ -17,12 +21,16 @@ module Arango
|
|
17
21
|
nil
|
18
22
|
end
|
19
23
|
|
20
|
-
#
|
24
|
+
# get collection for index
|
25
|
+
# @param collection [Arango::Collection]
|
26
|
+
# @param id [String] like "CollectionName/XXXX"
|
27
|
+
# @return [Arango::Result]
|
21
28
|
def self.get collection:, id:
|
22
29
|
c, i = id.split '/' # Requests would convert / to %2F
|
23
30
|
Arango::Requests::Index::Get.execute(server: collection.database.server, args: {collection: c, id: i})
|
24
31
|
end
|
25
32
|
|
33
|
+
# create new Arango::Index instance
|
26
34
|
def initialize(collection:, fields:, cache_name: nil, deduplicate: nil, geo_json: nil, min_length: nil, sparse: nil,
|
27
35
|
type: "hash", unique: nil)
|
28
36
|
@collection = collection
|
@@ -48,12 +56,16 @@ module Arango
|
|
48
56
|
attr_accessor :cache_name, :deduplicate, :fields, :geo_json, :min_length, :sparse, :unique
|
49
57
|
attr_reader :collection, :database, :server, :type, :name, :id, :key, :is_newly_created
|
50
58
|
|
59
|
+
# set index type
|
60
|
+
# @param type [String], one of hash skiplist persistent geo fulltext, or primary
|
51
61
|
def type=(type)
|
52
62
|
satisfy_category?(type, %w[hash skiplist persistent geo fulltext primary])
|
53
63
|
@type = type
|
54
64
|
end
|
55
65
|
alias assign_type type=
|
56
66
|
|
67
|
+
# set index attributes from hash
|
68
|
+
# @param result [Hash]
|
57
69
|
def assign_attributes(result)
|
58
70
|
@id = result[:id] || @id
|
59
71
|
@name = result[:name] || @name
|
@@ -71,6 +83,8 @@ module Arango
|
|
71
83
|
|
72
84
|
# === DEFINE ===
|
73
85
|
|
86
|
+
# convert index to hash
|
87
|
+
# @return [Hash]
|
74
88
|
def to_h
|
75
89
|
{
|
76
90
|
key: @key,
|
@@ -91,6 +105,7 @@ module Arango
|
|
91
105
|
|
92
106
|
# === COMMANDS ===
|
93
107
|
|
108
|
+
# create Index in database
|
94
109
|
def create
|
95
110
|
body = {
|
96
111
|
fields: @fields,
|
@@ -128,10 +143,12 @@ module Arango
|
|
128
143
|
self
|
129
144
|
end
|
130
145
|
|
146
|
+
# String representation
|
131
147
|
def to_s
|
132
148
|
"Index(#{@id}:#{@type.to_sym}-#{@fields})"
|
133
149
|
end
|
134
150
|
|
151
|
+
# delete datbase index
|
135
152
|
def delete
|
136
153
|
c, i = @id.split '/' # Requests would convert / to %2F
|
137
154
|
Arango::Requests::Index::Delete.execute(server: @database.server, args: { collection: c, id: i})
|
data/lib/arango/replication.rb
CHANGED
data/lib/arango/request.rb
CHANGED
@@ -1,23 +1,41 @@
|
|
1
1
|
require "addressable/template"
|
2
2
|
module Arango
|
3
|
+
#
|
4
|
+
# Arango Request
|
5
|
+
# Implements REST API to Arango
|
6
|
+
# Used to define accessor classes to run `execute`
|
7
|
+
# Strictly internal. Not user accessible. Used to implement REST API representation classes.
|
8
|
+
#
|
3
9
|
class Request
|
4
10
|
class << self
|
11
|
+
# execute Arango::Request
|
12
|
+
# @return [Arango::Result]
|
5
13
|
def execute(**args)
|
6
14
|
self.new(**args).execute
|
7
15
|
end
|
8
16
|
|
17
|
+
# check if body exists
|
18
|
+
# @return [Boolean]
|
9
19
|
def has_body?
|
10
20
|
@has_body
|
11
21
|
end
|
12
22
|
|
23
|
+
# check if body is an Array
|
24
|
+
# @return [Boolean]
|
13
25
|
def body_is_array?
|
14
26
|
@body_is_array
|
15
27
|
end
|
16
28
|
|
29
|
+
# get body keys
|
30
|
+
# sets @body_keys to empty Hash (if unset)
|
31
|
+
# @return [Hash]
|
17
32
|
def body_keys
|
18
33
|
@body_keys ||= Hash.new
|
19
34
|
end
|
20
35
|
|
36
|
+
# define body element
|
37
|
+
# @param name [String]
|
38
|
+
# @param option [Symbol] `:required` or `:optional`, defaults to `nil`
|
21
39
|
def body(name, option = nil, &block)
|
22
40
|
@has_body = true
|
23
41
|
camel_name = name.to_s.camelize(:lower)
|
@@ -37,20 +55,26 @@ module Arango
|
|
37
55
|
@current_nested_body = nil
|
38
56
|
end
|
39
57
|
|
58
|
+
# make body an Array
|
40
59
|
def body_array
|
41
60
|
body_any
|
42
61
|
@body_is_array = true
|
43
62
|
end
|
44
63
|
|
64
|
+
# allow any body content
|
45
65
|
def body_any
|
46
66
|
@has_body = true
|
47
67
|
@body_any_key_allowed = true
|
48
68
|
end
|
49
69
|
|
70
|
+
# allow any body keys
|
50
71
|
def body_any_key_allowed
|
51
72
|
@body_any_key_allowed
|
52
73
|
end
|
53
74
|
|
75
|
+
# define body key
|
76
|
+
# @param name [String]
|
77
|
+
# @param option [Symbol] `:required` or `:optional`, defaults to `nil`
|
54
78
|
def key(name, option = nil)
|
55
79
|
raise Arango::Error.new("No body context!") unless @current_nested_body
|
56
80
|
camel_name = name.to_s.camelize(:lower)
|
@@ -64,14 +88,22 @@ module Arango
|
|
64
88
|
@current_nested_body[name] = value
|
65
89
|
end
|
66
90
|
|
91
|
+
# if request has a header defined
|
92
|
+
# @return [Boolean]
|
67
93
|
def has_header?
|
68
94
|
@has_header
|
69
95
|
end
|
70
96
|
|
97
|
+
# get defined headers
|
98
|
+
# sets headers to empty Hash if undefined
|
99
|
+
# @return [Hash]
|
71
100
|
def headers
|
72
101
|
@headers ||= Hash.new
|
73
102
|
end
|
74
103
|
|
104
|
+
# define header element
|
105
|
+
# @param name [String]
|
106
|
+
# @param option [Symbol] `:required` or `:optional`, defaults to `nil`
|
75
107
|
def header(name, option = nil)
|
76
108
|
@has_header = true
|
77
109
|
key = name.underscore.downcase.to_sym
|
@@ -84,14 +116,22 @@ module Arango
|
|
84
116
|
end
|
85
117
|
end
|
86
118
|
|
119
|
+
# parameters defined ?
|
120
|
+
# @return [Boolean]
|
87
121
|
def has_param?
|
88
122
|
@has_param
|
89
123
|
end
|
90
124
|
|
125
|
+
# get defined parameters
|
126
|
+
# sets parameters to empty Hash if undefined
|
127
|
+
# @return [Hash]
|
91
128
|
def params
|
92
129
|
@params ||= Hash.new
|
93
130
|
end
|
94
131
|
|
132
|
+
# define parameter element
|
133
|
+
# @param name [String]
|
134
|
+
# @param option [Symbol] `:required` or `:optional`, defaults to `nil`
|
95
135
|
def param(name, option = nil)
|
96
136
|
@has_param = true
|
97
137
|
camel_name = name.to_s.camelize(:lower)
|
@@ -104,26 +144,39 @@ module Arango
|
|
104
144
|
end
|
105
145
|
end
|
106
146
|
|
147
|
+
# define request method
|
148
|
+
# @param name [String] http request method (:GET, :PUT, :POST, :PATCH, :DELETE)
|
107
149
|
def request_method= name
|
108
150
|
@request_method = name
|
109
151
|
end
|
110
152
|
|
153
|
+
# get request method
|
111
154
|
def reqm
|
112
155
|
@request_method
|
113
156
|
end
|
114
157
|
|
158
|
+
# define uri template for API call
|
159
|
+
# @param template [String]
|
160
|
+
# see https://rubydoc.info/gems/addressable/Addressable/Template
|
115
161
|
def uri_template= template
|
116
162
|
@uri_template = Addressable::Template.new(template)
|
117
163
|
end
|
118
164
|
|
165
|
+
# get uri template
|
119
166
|
def uri_template
|
120
167
|
@uri_template
|
121
168
|
end
|
122
169
|
|
170
|
+
# get known http return codes and their meanings
|
171
|
+
# sets codes to empty hash if undefined
|
172
|
+
# @return [Hash]
|
123
173
|
def codes
|
124
174
|
@codes ||= {}
|
125
175
|
end
|
126
176
|
|
177
|
+
# define known http code and its meaning
|
178
|
+
# @param number [Integer]
|
179
|
+
# @param message [String]
|
127
180
|
def code(number, message)
|
128
181
|
codes[number] = message
|
129
182
|
end
|
@@ -136,6 +189,7 @@ module Arango
|
|
136
189
|
attr_reader :formatted_body
|
137
190
|
attr_reader :server
|
138
191
|
|
192
|
+
# create expanded URI, (from template, including keys) and http:// prefix
|
139
193
|
def formatted_uri
|
140
194
|
hash = {}
|
141
195
|
hash['db_context'] = ['_db', database] if database
|
@@ -143,6 +197,12 @@ module Arango
|
|
143
197
|
server.driver_instance.base_uri + self.class.uri_template.expand(hash)
|
144
198
|
end
|
145
199
|
|
200
|
+
# create Arango::Request instance
|
201
|
+
# @param body [Hash] optional
|
202
|
+
# @param params [Hash] optional
|
203
|
+
# @param headers [Hash] optional
|
204
|
+
# @param args [Hash] optional
|
205
|
+
# @param server [Arango::Server] use to target correct server (and driver)
|
146
206
|
def initialize(body: nil, params: {}, headers: nil, args: nil, server:)
|
147
207
|
@server = server
|
148
208
|
if args
|
@@ -158,6 +218,9 @@ module Arango
|
|
158
218
|
end
|
159
219
|
end
|
160
220
|
|
221
|
+
# execute request
|
222
|
+
# @return [Arango::Result]
|
223
|
+
# @raise [Arango::Error]
|
161
224
|
def execute
|
162
225
|
response, response_code = server.driver_instance.execute_request(self.class.reqm, formatted_uri, formatted_headers, formatted_params, formatted_body)
|
163
226
|
|
@@ -181,6 +244,7 @@ module Arango
|
|
181
244
|
|
182
245
|
private
|
183
246
|
|
247
|
+
# validate header according to defined header elements
|
184
248
|
def validate_and_format_header!(headers)
|
185
249
|
result = {}
|
186
250
|
headers ||= {} #raise Arango::Error.new("No headers given!") unless headers
|
@@ -205,6 +269,7 @@ module Arango
|
|
205
269
|
result
|
206
270
|
end
|
207
271
|
|
272
|
+
# validate parameters according to defined parameters
|
208
273
|
def validate_and_format_params!(params)
|
209
274
|
result = {}
|
210
275
|
params ||= {} #raise Arango::Error.new("No params given!") unless params
|
@@ -231,6 +296,7 @@ module Arango
|
|
231
296
|
result
|
232
297
|
end
|
233
298
|
|
299
|
+
# validate body according to defined body keys
|
234
300
|
def validate_and_format_body!(body)
|
235
301
|
result = {}
|
236
302
|
body ||= {}
|
@@ -265,6 +331,7 @@ module Arango
|
|
265
331
|
result
|
266
332
|
end
|
267
333
|
|
334
|
+
# validate nested body
|
268
335
|
def validate_and_format_nested!(nested_body, body_key, nested_keys)
|
269
336
|
result = {}
|
270
337
|
nested_keys.each do |key, options|
|