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.
Files changed (290) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +1 -1
  3. data/README.md +9 -11
  4. data/lib/arango/aql.rb +75 -9
  5. data/lib/arango/cursor.rb +6 -1
  6. data/lib/arango/database/analyzer.rb +3 -0
  7. data/lib/arango/database/aql_functions.rb +2 -0
  8. data/lib/arango/database/aql_queries.rb +2 -0
  9. data/lib/arango/database/aql_query_cache.rb +2 -0
  10. data/lib/arango/database/collections.rb +2 -0
  11. data/lib/arango/database/document_collections.rb +4 -2
  12. data/lib/arango/database/edge_collections.rb +2 -0
  13. data/lib/arango/database/foxx_services.rb +3 -0
  14. data/lib/arango/database/graphs.rb +2 -0
  15. data/lib/arango/database/http_route.rb +4 -1
  16. data/lib/arango/database/replication.rb +3 -1
  17. data/lib/arango/database/stream_transactions.rb +3 -0
  18. data/lib/arango/database/system_collections.rb +2 -0
  19. data/lib/arango/database/tasks.rb +2 -0
  20. data/lib/arango/database/transactions.rb +4 -1
  21. data/lib/arango/database/user.rb +2 -0
  22. data/lib/arango/database/view_access.rb +2 -0
  23. data/lib/arango/database.rb +4 -2
  24. data/lib/arango/document/base.rb +2 -0
  25. data/lib/arango/document/class_methods.rb +2 -0
  26. data/lib/arango/document/instance_methods.rb +2 -0
  27. data/lib/arango/document/mixin.rb +2 -0
  28. data/lib/arango/document.rb +3 -0
  29. data/lib/arango/document_collection/base.rb +2 -0
  30. data/lib/arango/document_collection/class_methods.rb +2 -0
  31. data/lib/arango/document_collection/documents.rb +2 -0
  32. data/lib/arango/document_collection/importing.rb +2 -0
  33. data/lib/arango/document_collection/indexes.rb +2 -0
  34. data/lib/arango/document_collection/instance_methods.rb +2 -0
  35. data/lib/arango/document_collection/mixin.rb +2 -0
  36. data/lib/arango/document_collection/replication.rb +2 -0
  37. data/lib/arango/document_collection/user.rb +2 -0
  38. data/lib/arango/driver/typhoeus.rb +2 -0
  39. data/lib/arango/edge/base.rb +2 -0
  40. data/lib/arango/edge/class_methods.rb +2 -0
  41. data/lib/arango/edge/instance_methods.rb +2 -0
  42. data/lib/arango/edge/mixin.rb +2 -0
  43. data/lib/arango/edge_collection/base.rb +2 -0
  44. data/lib/arango/edge_collection/class_methods.rb +2 -0
  45. data/lib/arango/edge_collection/edge_acces_2.rb +20 -20
  46. data/lib/arango/edge_collection/edges.rb +2 -0
  47. data/lib/arango/edge_collection/instance_methods.rb +2 -0
  48. data/lib/arango/edge_collection/mixin.rb +2 -0
  49. data/lib/arango/error.rb +5 -1
  50. data/lib/arango/error_db.rb +9 -0
  51. data/lib/arango/foxx.rb +3 -2
  52. data/lib/arango/graph/base.rb +2 -0
  53. data/lib/arango/graph/class_methods.rb +5 -2
  54. data/lib/arango/graph/definition.rb +2 -0
  55. data/lib/arango/graph/instance_methods.rb +7 -3
  56. data/lib/arango/graph/mixin.rb +2 -0
  57. data/lib/arango/helper/database_assignment.rb +2 -0
  58. data/lib/arango/helper/satisfaction.rb +2 -0
  59. data/lib/arango/helper/server_assignment.rb +2 -0
  60. data/lib/arango/index.rb +20 -3
  61. data/lib/arango/replication.rb +3 -2
  62. data/lib/arango/request.rb +67 -0
  63. data/lib/arango/requests/administration/availability.rb +3 -0
  64. data/lib/arango/requests/administration/cluster_endpoints.rb +3 -0
  65. data/lib/arango/requests/administration/create_task.rb +3 -0
  66. data/lib/arango/requests/administration/create_task_id.rb +3 -0
  67. data/lib/arango/requests/administration/delete_task.rb +3 -0
  68. data/lib/arango/requests/administration/echo.rb +3 -0
  69. data/lib/arango/requests/administration/endpoints.rb +3 -0
  70. data/lib/arango/requests/administration/engine.rb +3 -0
  71. data/lib/arango/requests/administration/execute.rb +3 -0
  72. data/lib/arango/requests/administration/get_log_level.rb +3 -0
  73. data/lib/arango/requests/administration/get_mode.rb +3 -0
  74. data/lib/arango/requests/administration/get_task.rb +3 -0
  75. data/lib/arango/requests/administration/list_tasks.rb +2 -0
  76. data/lib/arango/requests/administration/log.rb +2 -0
  77. data/lib/arango/requests/administration/metrics.rb +2 -0
  78. data/lib/arango/requests/administration/reload_routing.rb +2 -0
  79. data/lib/arango/requests/administration/role.rb +2 -0
  80. data/lib/arango/requests/administration/server_id.rb +2 -0
  81. data/lib/arango/requests/administration/set_log_level.rb +2 -0
  82. data/lib/arango/requests/administration/set_mode.rb +2 -0
  83. data/lib/arango/requests/administration/statistics.rb +2 -0
  84. data/lib/arango/requests/administration/statistics_description.rb +2 -0
  85. data/lib/arango/requests/administration/status.rb +2 -0
  86. data/lib/arango/requests/administration/target_version.rb +2 -0
  87. data/lib/arango/requests/administration/time.rb +2 -0
  88. data/lib/arango/requests/administration/version.rb +2 -0
  89. data/lib/arango/requests/analyzer/create.rb +3 -0
  90. data/lib/arango/requests/analyzer/delete.rb +3 -0
  91. data/lib/arango/requests/analyzer/get.rb +3 -0
  92. data/lib/arango/requests/analyzer/list.rb +3 -0
  93. data/lib/arango/requests/aql/clear_query_result_cache.rb +3 -0
  94. data/lib/arango/requests/aql/create_function.rb +3 -0
  95. data/lib/arango/requests/aql/current_queries.rb +3 -0
  96. data/lib/arango/requests/aql/delete_function.rb +4 -0
  97. data/lib/arango/requests/aql/delete_slow_query_list.rb +3 -0
  98. data/lib/arango/requests/aql/explain.rb +3 -0
  99. data/lib/arango/requests/aql/get_query_result_cache_properties.rb +3 -0
  100. data/lib/arango/requests/aql/get_query_tracking_properties.rb +3 -0
  101. data/lib/arango/requests/aql/get_slow_query_list.rb +3 -0
  102. data/lib/arango/requests/aql/kill_query.rb +4 -0
  103. data/lib/arango/requests/aql/list_functions.rb +2 -0
  104. data/lib/arango/requests/aql/parse.rb +2 -0
  105. data/lib/arango/requests/aql/query_result_cache_entries.rb +2 -0
  106. data/lib/arango/requests/aql/set_query_result_cache_properties.rb +2 -0
  107. data/lib/arango/requests/aql/set_query_tracking_properties.rb +2 -0
  108. data/lib/arango/requests/backup/create.rb +3 -0
  109. data/lib/arango/requests/backup/delete.rb +3 -0
  110. data/lib/arango/requests/backup/download.rb +3 -0
  111. data/lib/arango/requests/backup/list.rb +3 -0
  112. data/lib/arango/requests/backup/restore.rb +2 -0
  113. data/lib/arango/requests/backup/upload.rb +2 -0
  114. data/lib/arango/requests/bulk/execute.rb +3 -0
  115. data/lib/arango/requests/bulk/export.rb +3 -0
  116. data/lib/arango/requests/bulk/import_document.rb +3 -0
  117. data/lib/arango/requests/bulk/import_json.rb +3 -0
  118. data/lib/arango/requests/cluster/health.rb +3 -0
  119. data/lib/arango/requests/cluster/maintenance.rb +2 -0
  120. data/lib/arango/requests/cluster/statistics.rb +3 -1
  121. data/lib/arango/requests/collection/checksum.rb +3 -0
  122. data/lib/arango/requests/collection/count.rb +3 -0
  123. data/lib/arango/requests/collection/create.rb +3 -0
  124. data/lib/arango/requests/collection/delete.rb +3 -0
  125. data/lib/arango/requests/collection/get.rb +3 -0
  126. data/lib/arango/requests/collection/get_properties.rb +3 -0
  127. data/lib/arango/requests/collection/list_all.rb +3 -0
  128. data/lib/arango/requests/collection/load.rb +2 -0
  129. data/lib/arango/requests/collection/load_indexes_into_memory.rb +2 -0
  130. data/lib/arango/requests/collection/recalculate_count.rb +2 -0
  131. data/lib/arango/requests/collection/rename.rb +2 -0
  132. data/lib/arango/requests/collection/responsible_shard.rb +2 -0
  133. data/lib/arango/requests/collection/revision.rb +2 -0
  134. data/lib/arango/requests/collection/rotate_journal.rb +2 -0
  135. data/lib/arango/requests/collection/set_properties.rb +2 -0
  136. data/lib/arango/requests/collection/shards.rb +2 -0
  137. data/lib/arango/requests/collection/statistics.rb +2 -0
  138. data/lib/arango/requests/collection/truncate.rb +2 -0
  139. data/lib/arango/requests/collection/unload.rb +3 -1
  140. data/lib/arango/requests/cursor/create.rb +3 -0
  141. data/lib/arango/requests/cursor/delete.rb +3 -0
  142. data/lib/arango/requests/cursor/next_batch.rb +2 -0
  143. data/lib/arango/requests/database/create.rb +3 -0
  144. data/lib/arango/requests/database/delete.rb +3 -0
  145. data/lib/arango/requests/database/get_information.rb +3 -0
  146. data/lib/arango/requests/database/list_accessible.rb +3 -0
  147. data/lib/arango/requests/database/list_all.rb +3 -0
  148. data/lib/arango/requests/document/create.rb +3 -0
  149. data/lib/arango/requests/document/create_multiple.rb +3 -0
  150. data/lib/arango/requests/document/delete.rb +3 -0
  151. data/lib/arango/requests/document/delete_multiple.rb +3 -0
  152. data/lib/arango/requests/document/get.rb +3 -0
  153. data/lib/arango/requests/document/get_multiple.rb +3 -0
  154. data/lib/arango/requests/document/head.rb +3 -0
  155. data/lib/arango/requests/document/replace.rb +2 -0
  156. data/lib/arango/requests/document/replace_multiple.rb +2 -0
  157. data/lib/arango/requests/document/update.rb +2 -0
  158. data/lib/arango/requests/document/update_multiple.rb +2 -0
  159. data/lib/arango/requests/foxx/commit.rb +3 -0
  160. data/lib/arango/requests/foxx/description.rb +3 -0
  161. data/lib/arango/requests/foxx/disable_development_mode.rb +3 -0
  162. data/lib/arango/requests/foxx/download_bundle.rb +3 -0
  163. data/lib/arango/requests/foxx/enable_development_mode.rb +3 -0
  164. data/lib/arango/requests/foxx/get_configuration.rb +3 -0
  165. data/lib/arango/requests/foxx/get_dependencies.rb +3 -0
  166. data/lib/arango/requests/foxx/install.rb +3 -0
  167. data/lib/arango/requests/foxx/list_all.rb +3 -0
  168. data/lib/arango/requests/foxx/list_scripts.rb +2 -0
  169. data/lib/arango/requests/foxx/readme.rb +2 -0
  170. data/lib/arango/requests/foxx/replace.rb +2 -0
  171. data/lib/arango/requests/foxx/replace_configuration.rb +2 -0
  172. data/lib/arango/requests/foxx/replace_dependencies.rb +2 -0
  173. data/lib/arango/requests/foxx/run_script.rb +2 -0
  174. data/lib/arango/requests/foxx/run_tests.rb +2 -0
  175. data/lib/arango/requests/foxx/swagger.rb +2 -0
  176. data/lib/arango/requests/foxx/uninstall.rb +2 -0
  177. data/lib/arango/requests/foxx/update_configuration.rb +2 -0
  178. data/lib/arango/requests/foxx/update_dependencies.rb +2 -0
  179. data/lib/arango/requests/foxx/upgrade.rb +3 -1
  180. data/lib/arango/requests/graph/add_edge_definition.rb +2 -0
  181. data/lib/arango/requests/graph/add_vertex_collection.rb +2 -0
  182. data/lib/arango/requests/graph/create.rb +3 -0
  183. data/lib/arango/requests/graph/create_edge.rb +3 -0
  184. data/lib/arango/requests/graph/create_vertex.rb +3 -0
  185. data/lib/arango/requests/graph/delete.rb +3 -0
  186. data/lib/arango/requests/graph/delete_edge.rb +3 -0
  187. data/lib/arango/requests/graph/delete_vertex.rb +3 -0
  188. data/lib/arango/requests/graph/get.rb +3 -0
  189. data/lib/arango/requests/graph/get_edge.rb +3 -0
  190. data/lib/arango/requests/graph/get_vertex.rb +3 -0
  191. data/lib/arango/requests/graph/list_all.rb +3 -0
  192. data/lib/arango/requests/graph/list_edge_definitions.rb +2 -0
  193. data/lib/arango/requests/graph/list_vertex_collections.rb +2 -0
  194. data/lib/arango/requests/graph/remove_edge_definition.rb +2 -0
  195. data/lib/arango/requests/graph/remove_vertex_collection.rb +2 -0
  196. data/lib/arango/requests/graph/replace_edge.rb +2 -0
  197. data/lib/arango/requests/graph/replace_edge_definition.rb +2 -0
  198. data/lib/arango/requests/graph/replace_vertex.rb +2 -0
  199. data/lib/arango/requests/graph/update_edge.rb +2 -0
  200. data/lib/arango/requests/graph/update_vertex.rb +2 -0
  201. data/lib/arango/requests/graph_edges/read.rb +2 -0
  202. data/lib/arango/requests/graph_traversal/execute.rb +3 -0
  203. data/lib/arango/requests/index/create.rb +3 -0
  204. data/lib/arango/requests/index/delete.rb +3 -0
  205. data/lib/arango/requests/index/get.rb +3 -0
  206. data/lib/arango/requests/index/list_all.rb +3 -0
  207. data/lib/arango/requests/job/cancel.rb +3 -0
  208. data/lib/arango/requests/job/delete.rb +3 -0
  209. data/lib/arango/requests/job/get.rb +3 -0
  210. data/lib/arango/requests/job/list.rb +3 -0
  211. data/lib/arango/requests/job/result.rb +2 -0
  212. data/lib/arango/requests/replication/create_dump_batch.rb +3 -0
  213. data/lib/arango/requests/replication/delete_dump_batch.rb +3 -0
  214. data/lib/arango/requests/replication/get_applier_config.rb +3 -0
  215. data/lib/arango/requests/replication/get_applier_state.rb +3 -0
  216. data/lib/arango/requests/replication/get_cluster_inventory.rb +3 -0
  217. data/lib/arango/requests/replication/get_dump.rb +3 -0
  218. data/lib/arango/requests/replication/get_inventory.rb +3 -0
  219. data/lib/arango/requests/replication/get_last_tick.rb +3 -0
  220. data/lib/arango/requests/replication/get_log_first_tick.rb +3 -0
  221. data/lib/arango/requests/replication/get_log_follow.rb +3 -0
  222. data/lib/arango/requests/replication/get_logger_state.rb +3 -0
  223. data/lib/arango/requests/replication/get_logger_tick_ranges.rb +3 -0
  224. data/lib/arango/requests/replication/get_server_id.rb +3 -0
  225. data/lib/arango/requests/replication/get_tail.rb +3 -0
  226. data/lib/arango/requests/replication/get_tick_ranges.rb +3 -0
  227. data/lib/arango/requests/replication/make_slave.rb +2 -0
  228. data/lib/arango/requests/replication/prolong_dump_batch.rb +2 -0
  229. data/lib/arango/requests/replication/set_applier_config.rb +2 -0
  230. data/lib/arango/requests/replication/start_applier.rb +2 -0
  231. data/lib/arango/requests/replication/stop_applier.rb +2 -0
  232. data/lib/arango/requests/replication/synchronize.rb +2 -0
  233. data/lib/arango/requests/task/all.rb +2 -0
  234. data/lib/arango/requests/task/create.rb +3 -0
  235. data/lib/arango/requests/task/create_with_id.rb +3 -0
  236. data/lib/arango/requests/task/delete.rb +3 -0
  237. data/lib/arango/requests/task/get.rb +3 -0
  238. data/lib/arango/requests/transaction/begin.rb +3 -0
  239. data/lib/arango/requests/transaction/commit.rb +3 -0
  240. data/lib/arango/requests/transaction/delete.rb +3 -0
  241. data/lib/arango/requests/transaction/execute.rb +3 -0
  242. data/lib/arango/requests/transaction/list_running.rb +2 -0
  243. data/lib/arango/requests/transaction/status.rb +2 -0
  244. data/lib/arango/requests/user/clear_collection_access_level.rb +3 -0
  245. data/lib/arango/requests/user/clear_database_access_level.rb +3 -0
  246. data/lib/arango/requests/user/create.rb +3 -0
  247. data/lib/arango/requests/user/delete.rb +3 -0
  248. data/lib/arango/requests/user/get.rb +3 -0
  249. data/lib/arango/requests/user/get_collection_access_level.rb +3 -0
  250. data/lib/arango/requests/user/get_database_access_level.rb +3 -0
  251. data/lib/arango/requests/user/list_all.rb +3 -1
  252. data/lib/arango/requests/user/list_databases.rb +2 -0
  253. data/lib/arango/requests/user/replace.rb +2 -0
  254. data/lib/arango/requests/user/set_collection_access_level.rb +2 -0
  255. data/lib/arango/requests/user/set_database_access_level.rb +2 -0
  256. data/lib/arango/requests/user/update.rb +2 -0
  257. data/lib/arango/requests/view/create_search_view.rb +3 -0
  258. data/lib/arango/requests/view/delete.rb +4 -1
  259. data/lib/arango/requests/view/get.rb +3 -0
  260. data/lib/arango/requests/view/get_properties.rb +3 -0
  261. data/lib/arango/requests/view/list_all.rb +2 -0
  262. data/lib/arango/requests/view/rename.rb +2 -0
  263. data/lib/arango/requests/view/set_search_view_properties.rb +3 -1
  264. data/lib/arango/requests/view/update_search_view_properties.rb +2 -0
  265. data/lib/arango/requests/wal/flush.rb +3 -0
  266. data/lib/arango/requests/wal/get_properties.rb +4 -0
  267. data/lib/arango/requests/wal/set_properties.rb +2 -0
  268. data/lib/arango/requests/wal/transactions.rb +2 -0
  269. data/lib/arango/result.rb +4 -0
  270. data/lib/arango/search_view.rb +5 -1
  271. data/lib/arango/server/administration.rb +5 -1
  272. data/lib/arango/server/agency.rb +2 -0
  273. data/lib/arango/server/async.rb +3 -1
  274. data/lib/arango/server/databases.rb +2 -0
  275. data/lib/arango/server/monitoring.rb +2 -0
  276. data/lib/arango/server/opal_support.rb +2 -0
  277. data/lib/arango/server/tasks.rb +2 -0
  278. data/lib/arango/server/user.rb +2 -0
  279. data/lib/arango/server.rb +3 -2
  280. data/lib/arango/task.rb +3 -2
  281. data/lib/arango/transaction.rb +3 -2
  282. data/lib/arango/user.rb +78 -39
  283. data/lib/arango/version.rb +2 -1
  284. data/lib/arango/view/basics.rb +6 -0
  285. data/lib/arango/view.rb +3 -2
  286. data/lib/arango.rb +42 -0
  287. data/lib/arangodb-driver.rb +2 -7
  288. metadata +2 -46
  289. data/arango_opal.js +0 -25855
  290. 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
- # === GRAPH ===
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,5 +1,7 @@
1
1
  module Arango
2
+ # Arango EdgeCollection
2
3
  module EdgeCollection
4
+ # Arango EdgeCollection InstanceMethods
3
5
  module InstanceMethods
4
6
 
5
7
  # Instantiate a new collection.
@@ -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"
@@ -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
@@ -1,6 +1,7 @@
1
- # === FOXX ===
2
-
3
1
  module Arango
2
+ #
3
+ # Arango Foxx
4
+ #
4
5
  class Foxx
5
6
  include Arango::Helper::Satisfaction
6
7
 
@@ -1,5 +1,7 @@
1
1
  module Arango
2
+ # Arango Graph
2
3
  module Graph
4
+ # Arango Graph Base
3
5
  class Base
4
6
  include Arango::Graph::Mixin
5
7
  end
@@ -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,5 +1,7 @@
1
1
  module Arango
2
+ # Arango Graph
2
3
  module Graph
4
+ # Arango Graph EdgeAccess
3
5
  module EdgeAccess
4
6
  def edge_collection
5
7
 
@@ -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 and database are optional.
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 status
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,
@@ -1,5 +1,7 @@
1
1
  module Arango
2
+ # Arango Graph
2
3
  module Graph
4
+ # Arango Graph Mixin
3
5
  module Mixin
4
6
  #@!visibility private
5
7
  def self.included(base)
@@ -1,5 +1,7 @@
1
1
  module Arango
2
+ # Arango Helper
2
3
  module Helper
4
+ # Arango Helper DatabaseAssignment
3
5
  module DatabaseAssignment
4
6
 
5
7
  protected
@@ -1,5 +1,7 @@
1
1
  module Arango
2
+ # Arango Helper
2
3
  module Helper
4
+ # Arango Helper Satisfaction
3
5
  module Satisfaction
4
6
  def satisfy_class?(object, *classes)
5
7
  return true if classes.include?(object.class)
@@ -1,5 +1,7 @@
1
1
  module Arango
2
+ # Arango Helper
2
3
  module Helper
4
+ # Arango Helper ServerAssignment
3
5
  module ServerAssignment
4
6
 
5
7
  protected
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
- # id is "CollectionName/XXXX"
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})
@@ -1,6 +1,7 @@
1
- # === REPLICATION ===
2
-
3
1
  module Arango
2
+ #
3
+ # Arango Replication
4
+ #
4
5
  class Replication
5
6
  include Arango::Helper::Satisfaction
6
7
 
@@ -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|
@@ -1,6 +1,9 @@
1
1
  module Arango
2
+ # Arango Requests
2
3
  module Requests
4
+ # Administration Requests
3
5
  module Administration
6
+ # API: GET /_admin/server/availability
4
7
  class Availability < Arango::Request
5
8
  self.request_method = :get
6
9
 
@@ -1,6 +1,9 @@
1
1
  module Arango
2
+ # Arango Requests
2
3
  module Requests
4
+ # Administration Requests
3
5
  module Administration
6
+ # API: GET /_api/cluster/endpoints
4
7
  class ClusterEndpoints < Arango::Request
5
8
  self.request_method = :get
6
9
 
@@ -1,6 +1,9 @@
1
1
  module Arango
2
+ # Arango Requests
2
3
  module Requests
4
+ # Administration Requests
3
5
  module Administration
6
+ # API: POST /_api/tasks
4
7
  class CreateTask < Arango::Request
5
8
  self.request_method = :post
6
9
 
@@ -1,6 +1,9 @@
1
1
  module Arango
2
+ # Arango Requests
2
3
  module Requests
4
+ # Administration Requests
3
5
  module Administration
6
+ # API: PUT /_api/tasks/{id}
4
7
  class CreateTaskId < Arango::Request
5
8
  self.request_method = :put
6
9
 
@@ -1,6 +1,9 @@
1
1
  module Arango
2
+ # Arango Requests
2
3
  module Requests
4
+ # Administration Requests
3
5
  module Administration
6
+ # API: DELETE /_api/tasks/{id}
4
7
  class DeleteTasks < Arango::Request
5
8
  self.request_method = :delete
6
9
 
@@ -1,6 +1,9 @@
1
1
  module Arango
2
+ # Arango Requests
2
3
  module Requests
4
+ # Administration Requests
3
5
  module Administration
6
+ # API: POST /_admin/echo
4
7
  class Echo < Arango::Request
5
8
  self.request_method = :post
6
9
 
@@ -1,6 +1,9 @@
1
1
  module Arango
2
+ # Arango Requests
2
3
  module Requests
4
+ # Administration Requests
3
5
  module Administration
6
+ # API: GET /_api/endpoint
4
7
  class Endpoints < Arango::Request
5
8
  self.request_method = :get
6
9
 
@@ -1,6 +1,9 @@
1
1
  module Arango
2
+ # Arango Requests
2
3
  module Requests
4
+ # Administration Requests
3
5
  module Administration
6
+ # API: GET /_api/engine
4
7
  class Engine < Arango::Request
5
8
  self.request_method = :get
6
9
 
@@ -1,6 +1,9 @@
1
1
  module Arango
2
+ # Arango Requests
2
3
  module Requests
4
+ # Administration Requests
3
5
  module Administration
6
+ # API: POST /_admin/execute
4
7
  class Execute < Arango::Request
5
8
  self.request_method = :post
6
9