couchbase 3.0.0.beta.1 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1007) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +74 -6
  3. data/ext/CMakeLists.txt +96 -136
  4. data/ext/build_config.hxx.in +3 -1
  5. data/ext/build_version.hxx.in +11 -7
  6. data/ext/cmake/Backtrace.cmake +35 -0
  7. data/ext/cmake/BuildTracing.cmake +6 -0
  8. data/ext/cmake/Cache.cmake +29 -0
  9. data/ext/cmake/CompilerWarnings.cmake +84 -0
  10. data/ext/cmake/PreventInSourceBuilds.cmake +21 -0
  11. data/ext/cmake/Sanitizers.cmake +66 -0
  12. data/ext/cmake/StandardProjectSettings.cmake +40 -0
  13. data/ext/cmake/StaticAnalyzers.cmake +37 -0
  14. data/ext/cmake/Testing.cmake +49 -0
  15. data/ext/cmake/ThirdPartyDependencies.cmake +20 -0
  16. data/ext/cmake/VersionInfo.cmake +37 -0
  17. data/ext/couchbase/bucket.hxx +252 -41
  18. data/ext/couchbase/capabilities.hxx +117 -0
  19. data/ext/couchbase/cbcrypto/cbcrypto.cc +15 -15
  20. data/ext/couchbase/cbsasl/client.h +1 -1
  21. data/ext/couchbase/cluster.hxx +150 -11
  22. data/ext/couchbase/cluster_options.hxx +4 -1
  23. data/ext/couchbase/collections_manifest.hxx +1 -1
  24. data/ext/couchbase/configuration.hxx +245 -67
  25. data/ext/couchbase/couchbase.cxx +3567 -1223
  26. data/ext/couchbase/diagnostics.hxx +248 -0
  27. data/ext/couchbase/document_id.hxx +4 -2
  28. data/ext/couchbase/error_context/analytics.hxx +46 -0
  29. data/ext/couchbase/error_context/http.hxx +44 -0
  30. data/ext/couchbase/error_context/key_value.hxx +47 -0
  31. data/ext/couchbase/error_context/query.hxx +46 -0
  32. data/ext/couchbase/error_context/search.hxx +47 -0
  33. data/ext/couchbase/error_context/view.hxx +47 -0
  34. data/ext/couchbase/error_map.hxx +203 -3
  35. data/ext/couchbase/errors.hxx +19 -4
  36. data/ext/couchbase/io/dns_client.hxx +9 -9
  37. data/ext/couchbase/io/dns_codec.hxx +2 -3
  38. data/ext/couchbase/io/dns_config.hxx +1 -1
  39. data/ext/couchbase/io/dns_message.hxx +1 -1
  40. data/ext/couchbase/io/http_command.hxx +29 -9
  41. data/ext/couchbase/io/http_context.hxx +37 -0
  42. data/ext/couchbase/io/http_message.hxx +10 -1
  43. data/ext/couchbase/io/http_parser.hxx +3 -1
  44. data/ext/couchbase/io/http_session.hxx +131 -47
  45. data/ext/couchbase/io/http_session_manager.hxx +149 -7
  46. data/ext/couchbase/io/mcbp_command.hxx +121 -52
  47. data/ext/couchbase/io/mcbp_context.hxx +37 -0
  48. data/ext/couchbase/io/mcbp_message.hxx +1 -1
  49. data/ext/couchbase/io/mcbp_parser.hxx +1 -1
  50. data/ext/couchbase/io/mcbp_session.hxx +411 -101
  51. data/ext/couchbase/io/query_cache.hxx +61 -0
  52. data/ext/couchbase/io/retry_action.hxx +30 -0
  53. data/ext/couchbase/io/retry_context.hxx +38 -0
  54. data/ext/couchbase/io/retry_orchestrator.hxx +112 -0
  55. data/ext/couchbase/io/retry_reason.hxx +235 -0
  56. data/ext/couchbase/io/retry_strategy.hxx +156 -0
  57. data/ext/couchbase/io/streams.hxx +62 -11
  58. data/ext/couchbase/mutation_token.hxx +1 -1
  59. data/ext/couchbase/operations.hxx +19 -1
  60. data/ext/couchbase/operations/analytics_dataset_create.hxx +21 -13
  61. data/ext/couchbase/operations/analytics_dataset_drop.hxx +19 -10
  62. data/ext/couchbase/operations/analytics_dataset_get_all.hxx +18 -11
  63. data/ext/couchbase/operations/analytics_dataverse_create.hxx +20 -12
  64. data/ext/couchbase/operations/analytics_dataverse_drop.hxx +19 -12
  65. data/ext/couchbase/operations/analytics_get_pending_mutations.hxx +19 -11
  66. data/ext/couchbase/operations/analytics_index_create.hxx +19 -12
  67. data/ext/couchbase/operations/analytics_index_drop.hxx +18 -11
  68. data/ext/couchbase/operations/analytics_index_get_all.hxx +16 -9
  69. data/ext/couchbase/operations/analytics_link_connect.hxx +17 -10
  70. data/ext/couchbase/operations/analytics_link_disconnect.hxx +19 -12
  71. data/ext/couchbase/operations/bucket_create.hxx +45 -15
  72. data/ext/couchbase/operations/bucket_drop.hxx +12 -10
  73. data/ext/couchbase/operations/bucket_flush.hxx +11 -10
  74. data/ext/couchbase/operations/bucket_get.hxx +17 -11
  75. data/ext/couchbase/operations/bucket_get_all.hxx +16 -8
  76. data/ext/couchbase/operations/bucket_settings.hxx +59 -4
  77. data/ext/couchbase/operations/bucket_update.hxx +44 -15
  78. data/ext/couchbase/operations/cluster_developer_preview_enable.hxx +9 -8
  79. data/ext/couchbase/operations/collection_create.hxx +23 -14
  80. data/ext/couchbase/operations/collection_drop.hxx +21 -14
  81. data/ext/couchbase/operations/collections_manifest_get.hxx +66 -0
  82. data/ext/couchbase/operations/design_document.hxx +1 -1
  83. data/ext/couchbase/operations/document_analytics.hxx +46 -18
  84. data/ext/couchbase/operations/document_append.hxx +72 -0
  85. data/ext/couchbase/operations/document_decrement.hxx +10 -12
  86. data/ext/couchbase/operations/document_exists.hxx +9 -8
  87. data/ext/couchbase/operations/document_get.hxx +10 -11
  88. data/ext/couchbase/operations/document_get_and_lock.hxx +9 -11
  89. data/ext/couchbase/operations/document_get_and_touch.hxx +9 -11
  90. data/ext/couchbase/operations/document_get_projected.hxx +26 -16
  91. data/ext/couchbase/operations/document_increment.hxx +10 -12
  92. data/ext/couchbase/operations/document_insert.hxx +10 -12
  93. data/ext/couchbase/operations/document_lookup_in.hxx +13 -10
  94. data/ext/couchbase/operations/document_mutate_in.hxx +22 -13
  95. data/ext/couchbase/operations/document_prepend.hxx +72 -0
  96. data/ext/couchbase/operations/document_query.hxx +132 -27
  97. data/ext/couchbase/operations/document_remove.hxx +12 -12
  98. data/ext/couchbase/operations/document_replace.hxx +10 -12
  99. data/ext/couchbase/operations/document_search.hxx +53 -16
  100. data/ext/couchbase/operations/document_touch.hxx +9 -11
  101. data/ext/couchbase/operations/document_unlock.hxx +9 -11
  102. data/ext/couchbase/operations/document_upsert.hxx +10 -12
  103. data/ext/couchbase/operations/document_view.hxx +31 -14
  104. data/ext/couchbase/operations/group_drop.hxx +72 -0
  105. data/ext/couchbase/operations/group_get.hxx +80 -0
  106. data/ext/couchbase/operations/group_get_all.hxx +77 -0
  107. data/ext/couchbase/operations/group_upsert.hxx +125 -0
  108. data/ext/couchbase/operations/http_noop.hxx +78 -0
  109. data/ext/couchbase/operations/mcbp_noop.hxx +55 -0
  110. data/ext/couchbase/operations/query_index_build_deferred.hxx +18 -11
  111. data/ext/couchbase/operations/query_index_create.hxx +32 -15
  112. data/ext/couchbase/operations/query_index_drop.hxx +30 -13
  113. data/ext/couchbase/operations/query_index_get_all.hxx +26 -9
  114. data/ext/couchbase/operations/rbac.hxx +276 -0
  115. data/ext/couchbase/operations/role_get_all.hxx +77 -0
  116. data/ext/couchbase/operations/scope_create.hxx +24 -13
  117. data/ext/couchbase/operations/scope_drop.hxx +20 -13
  118. data/ext/couchbase/operations/scope_get_all.hxx +18 -12
  119. data/ext/couchbase/operations/search_get_stats.hxx +60 -0
  120. data/ext/couchbase/operations/search_index.hxx +1 -1
  121. data/ext/couchbase/operations/search_index_analyze_document.hxx +28 -15
  122. data/ext/couchbase/operations/search_index_control_ingest.hxx +26 -13
  123. data/ext/couchbase/operations/search_index_control_plan_freeze.hxx +26 -13
  124. data/ext/couchbase/operations/search_index_control_query.hxx +26 -13
  125. data/ext/couchbase/operations/search_index_drop.hxx +24 -11
  126. data/ext/couchbase/operations/search_index_get.hxx +24 -11
  127. data/ext/couchbase/operations/search_index_get_all.hxx +15 -8
  128. data/ext/couchbase/operations/search_index_get_documents_count.hxx +45 -25
  129. data/ext/couchbase/operations/search_index_get_stats.hxx +88 -0
  130. data/ext/couchbase/operations/search_index_upsert.hxx +25 -12
  131. data/ext/couchbase/operations/user_drop.hxx +73 -0
  132. data/ext/couchbase/operations/user_get.hxx +81 -0
  133. data/ext/couchbase/operations/user_get_all.hxx +78 -0
  134. data/ext/couchbase/operations/user_upsert.hxx +132 -0
  135. data/ext/couchbase/operations/view_index_drop.hxx +10 -9
  136. data/ext/couchbase/operations/view_index_get.hxx +17 -10
  137. data/ext/couchbase/operations/view_index_get_all.hxx +17 -10
  138. data/ext/couchbase/operations/view_index_upsert.hxx +11 -10
  139. data/ext/couchbase/origin.hxx +49 -18
  140. data/ext/couchbase/platform/backtrace.c +189 -0
  141. data/ext/couchbase/platform/backtrace.h +54 -0
  142. data/ext/couchbase/platform/terminate_handler.cc +130 -0
  143. data/ext/couchbase/platform/terminate_handler.h +36 -0
  144. data/ext/couchbase/protocol/client_opcode.hxx +407 -39
  145. data/ext/couchbase/protocol/client_request.hxx +3 -2
  146. data/ext/couchbase/protocol/client_response.hxx +21 -18
  147. data/ext/couchbase/protocol/cmd_append.hxx +145 -0
  148. data/ext/couchbase/protocol/cmd_cluster_map_change_notification.hxx +7 -4
  149. data/ext/couchbase/protocol/cmd_decrement.hxx +1 -1
  150. data/ext/couchbase/protocol/cmd_exists.hxx +2 -1
  151. data/ext/couchbase/protocol/cmd_get.hxx +2 -2
  152. data/ext/couchbase/protocol/cmd_get_and_lock.hxx +1 -1
  153. data/ext/couchbase/protocol/cmd_get_and_touch.hxx +1 -1
  154. data/ext/couchbase/protocol/cmd_get_cluster_config.hxx +9 -2
  155. data/ext/couchbase/protocol/cmd_get_collection_id.hxx +7 -7
  156. data/ext/couchbase/protocol/cmd_get_collections_manifest.hxx +1 -1
  157. data/ext/couchbase/protocol/cmd_get_error_map.hxx +1 -1
  158. data/ext/couchbase/protocol/cmd_hello.hxx +12 -3
  159. data/ext/couchbase/protocol/cmd_increment.hxx +1 -1
  160. data/ext/couchbase/protocol/cmd_info.hxx +1 -1
  161. data/ext/couchbase/protocol/cmd_insert.hxx +1 -1
  162. data/ext/couchbase/protocol/cmd_lookup_in.hxx +12 -4
  163. data/ext/couchbase/protocol/cmd_mutate_in.hxx +50 -9
  164. data/ext/couchbase/protocol/cmd_noop.hxx +82 -0
  165. data/ext/couchbase/protocol/cmd_prepend.hxx +145 -0
  166. data/ext/couchbase/protocol/cmd_remove.hxx +1 -1
  167. data/ext/couchbase/protocol/cmd_replace.hxx +1 -1
  168. data/ext/couchbase/protocol/cmd_sasl_auth.hxx +1 -1
  169. data/ext/couchbase/protocol/cmd_sasl_list_mechs.hxx +1 -1
  170. data/ext/couchbase/protocol/cmd_sasl_step.hxx +1 -1
  171. data/ext/couchbase/protocol/cmd_select_bucket.hxx +1 -1
  172. data/ext/couchbase/protocol/cmd_touch.hxx +1 -1
  173. data/ext/couchbase/protocol/cmd_unlock.hxx +1 -1
  174. data/ext/couchbase/protocol/cmd_upsert.hxx +1 -1
  175. data/ext/couchbase/protocol/datatype.hxx +1 -1
  176. data/ext/couchbase/protocol/durability_level.hxx +17 -1
  177. data/ext/couchbase/protocol/enhanced_error_info.hxx +28 -0
  178. data/ext/couchbase/protocol/frame_info_id.hxx +1 -1
  179. data/ext/couchbase/protocol/hello_feature.hxx +10 -1
  180. data/ext/couchbase/protocol/magic.hxx +7 -7
  181. data/ext/couchbase/protocol/server_opcode.hxx +3 -3
  182. data/ext/couchbase/protocol/server_request.hxx +1 -1
  183. data/ext/couchbase/protocol/status.hxx +71 -61
  184. data/ext/couchbase/protocol/unsigned_leb128.h +2 -2
  185. data/ext/couchbase/service_type.hxx +3 -3
  186. data/ext/couchbase/timeout_defaults.hxx +1 -1
  187. data/ext/couchbase/utils/byteswap.hxx +1 -1
  188. data/ext/couchbase/utils/connection_string.hxx +32 -5
  189. data/ext/couchbase/version.hxx +19 -5
  190. data/ext/extconf.rb +61 -43
  191. data/ext/test/CMakeLists.txt +5 -0
  192. data/ext/test/test_helper.hxx +141 -0
  193. data/ext/test/test_helper_native.hxx +56 -0
  194. data/ext/test/test_helper_ruby.hxx +72 -0
  195. data/ext/test/test_native_binary_operations.cxx +186 -0
  196. data/ext/test/test_native_diagnostics.cxx +436 -0
  197. data/ext/test/test_native_trivial_crud.cxx +83 -0
  198. data/ext/test/test_ruby_trivial_crud.cxx +35 -0
  199. data/ext/test/test_ruby_trivial_query.cxx +34 -0
  200. data/ext/third_party/asio/asio/include/asio.hpp +35 -0
  201. data/ext/third_party/asio/asio/include/asio/any_io_executor.hpp +71 -0
  202. data/ext/third_party/asio/asio/include/asio/associated_allocator.hpp +1 -7
  203. data/ext/third_party/asio/asio/include/asio/associated_executor.hpp +36 -19
  204. data/ext/third_party/asio/asio/include/asio/async_result.hpp +1 -8
  205. data/ext/third_party/asio/asio/include/asio/awaitable.hpp +14 -4
  206. data/ext/third_party/asio/asio/include/asio/basic_datagram_socket.hpp +12 -7
  207. data/ext/third_party/asio/asio/include/asio/basic_deadline_timer.hpp +4 -4
  208. data/ext/third_party/asio/asio/include/asio/basic_raw_socket.hpp +11 -7
  209. data/ext/third_party/asio/asio/include/asio/basic_seq_packet_socket.hpp +9 -4
  210. data/ext/third_party/asio/asio/include/asio/basic_serial_port.hpp +6 -6
  211. data/ext/third_party/asio/asio/include/asio/basic_signal_set.hpp +4 -4
  212. data/ext/third_party/asio/asio/include/asio/basic_socket.hpp +5 -5
  213. data/ext/third_party/asio/asio/include/asio/basic_socket_acceptor.hpp +13 -7
  214. data/ext/third_party/asio/asio/include/asio/basic_stream_socket.hpp +7 -3
  215. data/ext/third_party/asio/asio/include/asio/basic_waitable_timer.hpp +52 -4
  216. data/ext/third_party/asio/asio/include/asio/bind_executor.hpp +10 -15
  217. data/ext/third_party/asio/asio/include/asio/buffer.hpp +6 -4
  218. data/ext/third_party/asio/asio/include/asio/co_spawn.hpp +380 -9
  219. data/ext/third_party/asio/asio/include/asio/defer.hpp +4 -1
  220. data/ext/third_party/asio/asio/include/asio/detached.hpp +50 -0
  221. data/ext/third_party/asio/asio/include/asio/detail/atomic_count.hpp +19 -0
  222. data/ext/third_party/asio/asio/include/asio/detail/bind_handler.hpp +144 -26
  223. data/ext/third_party/asio/asio/include/asio/detail/blocking_executor_op.hpp +107 -0
  224. data/ext/third_party/asio/asio/include/asio/detail/buffer_sequence_adapter.hpp +106 -0
  225. data/ext/third_party/asio/asio/include/asio/detail/bulk_executor_op.hpp +88 -0
  226. data/ext/third_party/asio/asio/include/asio/detail/completion_handler.hpp +10 -5
  227. data/ext/third_party/asio/asio/include/asio/detail/conditionally_enabled_event.hpp +8 -0
  228. data/ext/third_party/asio/asio/include/asio/detail/config.hpp +360 -37
  229. data/ext/third_party/asio/asio/include/asio/detail/deadline_timer_service.hpp +17 -2
  230. data/ext/third_party/asio/asio/include/asio/detail/descriptor_ops.hpp +24 -6
  231. data/ext/third_party/asio/asio/include/asio/detail/descriptor_read_op.hpp +32 -14
  232. data/ext/third_party/asio/asio/include/asio/detail/descriptor_write_op.hpp +32 -14
  233. data/ext/third_party/asio/asio/include/asio/detail/executor_function.hpp +133 -34
  234. data/ext/third_party/asio/asio/include/asio/detail/handler_alloc_helpers.hpp +42 -0
  235. data/ext/third_party/asio/asio/include/asio/detail/handler_invoke_helpers.hpp +23 -0
  236. data/ext/third_party/asio/asio/include/asio/detail/handler_tracking.hpp +26 -0
  237. data/ext/third_party/asio/asio/include/asio/detail/handler_work.hpp +370 -45
  238. data/ext/third_party/asio/asio/include/asio/detail/impl/descriptor_ops.ipp +208 -74
  239. data/ext/third_party/asio/asio/include/asio/detail/impl/handler_tracking.ipp +39 -1
  240. data/ext/third_party/asio/asio/include/asio/detail/impl/reactive_serial_port_service.ipp +12 -15
  241. data/ext/third_party/asio/asio/include/asio/detail/impl/scheduler.ipp +37 -0
  242. data/ext/third_party/asio/asio/include/asio/detail/impl/signal_set_service.ipp +2 -1
  243. data/ext/third_party/asio/asio/include/asio/detail/impl/socket_ops.ipp +661 -274
  244. data/ext/third_party/asio/asio/include/asio/detail/impl/strand_executor_service.hpp +210 -4
  245. data/ext/third_party/asio/asio/include/asio/detail/impl/strand_service.hpp +8 -9
  246. data/ext/third_party/asio/asio/include/asio/detail/impl/strand_service.ipp +5 -4
  247. data/ext/third_party/asio/asio/include/asio/detail/impl/win_iocp_io_context.ipp +15 -6
  248. data/ext/third_party/asio/asio/include/asio/detail/io_object_impl.hpp +32 -50
  249. data/ext/third_party/asio/asio/include/asio/detail/memory.hpp +3 -0
  250. data/ext/third_party/asio/asio/include/asio/detail/null_event.hpp +6 -0
  251. data/ext/third_party/asio/asio/include/asio/detail/pop_options.hpp +1 -1
  252. data/ext/third_party/asio/asio/include/asio/detail/posix_event.hpp +13 -0
  253. data/ext/third_party/asio/asio/include/asio/detail/push_options.hpp +1 -1
  254. data/ext/third_party/asio/asio/include/asio/detail/reactive_descriptor_service.hpp +38 -13
  255. data/ext/third_party/asio/asio/include/asio/detail/reactive_null_buffers_op.hpp +12 -6
  256. data/ext/third_party/asio/asio/include/asio/detail/reactive_serial_port_service.hpp +2 -3
  257. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_accept_op.hpp +36 -24
  258. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_connect_op.hpp +17 -10
  259. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_recv_op.hpp +38 -16
  260. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_recvfrom_op.hpp +36 -14
  261. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_recvmsg_op.hpp +21 -11
  262. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_send_op.hpp +43 -17
  263. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_sendto_op.hpp +39 -17
  264. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_service.hpp +44 -21
  265. data/ext/third_party/asio/asio/include/asio/detail/reactive_socket_service_base.hpp +41 -18
  266. data/ext/third_party/asio/asio/include/asio/detail/reactive_wait_op.hpp +12 -6
  267. data/ext/third_party/asio/asio/include/asio/detail/reactor_op.hpp +3 -1
  268. data/ext/third_party/asio/asio/include/asio/detail/resolve_endpoint_op.hpp +10 -8
  269. data/ext/third_party/asio/asio/include/asio/detail/resolve_query_op.hpp +11 -9
  270. data/ext/third_party/asio/asio/include/asio/detail/scheduler.hpp +8 -0
  271. data/ext/third_party/asio/asio/include/asio/detail/signal_handler.hpp +7 -5
  272. data/ext/third_party/asio/asio/include/asio/detail/socket_ops.hpp +46 -0
  273. data/ext/third_party/asio/asio/include/asio/detail/source_location.hpp +45 -0
  274. data/ext/third_party/asio/asio/include/asio/detail/std_event.hpp +12 -0
  275. data/ext/third_party/asio/asio/include/asio/detail/strand_executor_service.hpp +25 -1
  276. data/ext/third_party/asio/asio/include/asio/detail/strand_service.hpp +4 -1
  277. data/ext/third_party/asio/asio/include/asio/detail/thread_info_base.hpp +58 -0
  278. data/ext/third_party/asio/asio/include/asio/detail/type_traits.hpp +59 -0
  279. data/ext/third_party/asio/asio/include/asio/detail/variadic_templates.hpp +144 -1
  280. data/ext/third_party/asio/asio/include/asio/detail/wait_handler.hpp +9 -6
  281. data/ext/third_party/asio/asio/include/asio/detail/win_event.hpp +13 -0
  282. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_handle_read_op.hpp +9 -5
  283. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_handle_write_op.hpp +9 -5
  284. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_io_context.hpp +5 -1
  285. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_null_buffers_op.hpp +10 -6
  286. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_overlapped_op.hpp +9 -5
  287. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_overlapped_ptr.hpp +18 -6
  288. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_accept_op.hpp +15 -11
  289. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_connect_op.hpp +10 -5
  290. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_recv_op.hpp +8 -4
  291. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_recvfrom_op.hpp +8 -4
  292. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_recvmsg_op.hpp +8 -4
  293. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_socket_send_op.hpp +8 -4
  294. data/ext/third_party/asio/asio/include/asio/detail/win_iocp_wait_op.hpp +10 -5
  295. data/ext/third_party/asio/asio/include/asio/detail/winrt_resolve_op.hpp +8 -4
  296. data/ext/third_party/asio/asio/include/asio/detail/winrt_socket_connect_op.hpp +8 -4
  297. data/ext/third_party/asio/asio/include/asio/detail/winrt_socket_recv_op.hpp +8 -4
  298. data/ext/third_party/asio/asio/include/asio/detail/winrt_socket_send_op.hpp +8 -4
  299. data/ext/third_party/asio/asio/include/asio/detail/work_dispatcher.hpp +81 -6
  300. data/ext/third_party/asio/asio/include/asio/detail/wrapped_handler.hpp +45 -9
  301. data/ext/third_party/asio/asio/include/asio/dispatch.hpp +4 -1
  302. data/ext/third_party/asio/asio/include/asio/execution.hpp +48 -0
  303. data/ext/third_party/asio/asio/include/asio/execution/allocator.hpp +249 -0
  304. data/ext/third_party/asio/asio/include/asio/execution/any_executor.hpp +2264 -0
  305. data/ext/third_party/asio/asio/include/asio/execution/bad_executor.hpp +47 -0
  306. data/ext/third_party/asio/asio/include/asio/execution/blocking.hpp +1351 -0
  307. data/ext/third_party/asio/asio/include/asio/execution/blocking_adaptation.hpp +1064 -0
  308. data/ext/third_party/asio/asio/include/asio/execution/bulk_execute.hpp +390 -0
  309. data/ext/third_party/asio/asio/include/asio/execution/bulk_guarantee.hpp +1018 -0
  310. data/ext/third_party/asio/asio/include/asio/execution/connect.hpp +486 -0
  311. data/ext/third_party/asio/asio/include/asio/execution/context.hpp +185 -0
  312. data/ext/third_party/asio/asio/include/asio/execution/context_as.hpp +201 -0
  313. data/ext/third_party/asio/asio/include/asio/execution/detail/as_invocable.hpp +152 -0
  314. data/ext/third_party/asio/asio/include/asio/execution/detail/as_operation.hpp +105 -0
  315. data/ext/third_party/asio/asio/include/asio/execution/detail/as_receiver.hpp +128 -0
  316. data/ext/third_party/asio/asio/include/asio/execution/detail/bulk_sender.hpp +261 -0
  317. data/ext/third_party/asio/asio/include/asio/execution/detail/submit_receiver.hpp +233 -0
  318. data/ext/third_party/asio/asio/include/asio/execution/detail/void_receiver.hpp +90 -0
  319. data/ext/third_party/asio/asio/include/asio/execution/execute.hpp +264 -0
  320. data/ext/third_party/asio/asio/include/asio/execution/executor.hpp +238 -0
  321. data/ext/third_party/asio/asio/include/asio/execution/impl/bad_executor.ipp +40 -0
  322. data/ext/third_party/asio/asio/include/asio/execution/impl/receiver_invocation_error.ipp +36 -0
  323. data/ext/third_party/asio/asio/include/asio/execution/invocable_archetype.hpp +71 -0
  324. data/ext/third_party/asio/asio/include/asio/execution/mapping.hpp +917 -0
  325. data/ext/third_party/asio/asio/include/asio/execution/occupancy.hpp +178 -0
  326. data/ext/third_party/asio/asio/include/asio/execution/operation_state.hpp +94 -0
  327. data/ext/third_party/asio/asio/include/asio/execution/outstanding_work.hpp +721 -0
  328. data/ext/third_party/asio/asio/include/asio/execution/prefer_only.hpp +327 -0
  329. data/ext/third_party/asio/asio/include/asio/execution/receiver.hpp +280 -0
  330. data/ext/third_party/asio/asio/include/asio/execution/receiver_invocation_error.hpp +48 -0
  331. data/ext/third_party/asio/asio/include/asio/execution/relationship.hpp +720 -0
  332. data/ext/third_party/asio/asio/include/asio/execution/schedule.hpp +290 -0
  333. data/ext/third_party/asio/asio/include/asio/execution/scheduler.hpp +86 -0
  334. data/ext/third_party/asio/asio/include/asio/execution/sender.hpp +311 -0
  335. data/ext/third_party/asio/asio/include/asio/execution/set_done.hpp +253 -0
  336. data/ext/third_party/asio/asio/include/asio/execution/set_error.hpp +253 -0
  337. data/ext/third_party/asio/asio/include/asio/execution/set_value.hpp +486 -0
  338. data/ext/third_party/asio/asio/include/asio/execution/start.hpp +250 -0
  339. data/ext/third_party/asio/asio/include/asio/execution/submit.hpp +450 -0
  340. data/ext/third_party/asio/asio/include/asio/executor.hpp +7 -1
  341. data/ext/third_party/asio/asio/include/asio/executor_work_guard.hpp +126 -9
  342. data/ext/third_party/asio/asio/include/asio/handler_alloc_hook.hpp +28 -5
  343. data/ext/third_party/asio/asio/include/asio/handler_invoke_hook.hpp +29 -3
  344. data/ext/third_party/asio/asio/include/asio/impl/awaitable.hpp +14 -0
  345. data/ext/third_party/asio/asio/include/asio/impl/buffered_read_stream.hpp +44 -8
  346. data/ext/third_party/asio/asio/include/asio/impl/buffered_write_stream.hpp +44 -8
  347. data/ext/third_party/asio/asio/include/asio/impl/co_spawn.hpp +145 -7
  348. data/ext/third_party/asio/asio/include/asio/impl/compose.hpp +124 -22
  349. data/ext/third_party/asio/asio/include/asio/impl/connect.hpp +52 -8
  350. data/ext/third_party/asio/asio/include/asio/impl/defer.hpp +147 -12
  351. data/ext/third_party/asio/asio/include/asio/impl/dispatch.hpp +142 -12
  352. data/ext/third_party/asio/asio/include/asio/impl/executor.hpp +15 -101
  353. data/ext/third_party/asio/asio/include/asio/impl/executor.ipp +5 -0
  354. data/ext/third_party/asio/asio/include/asio/impl/handler_alloc_hook.ipp +13 -4
  355. data/ext/third_party/asio/asio/include/asio/impl/io_context.hpp +144 -57
  356. data/ext/third_party/asio/asio/include/asio/impl/multiple_exceptions.ipp +49 -0
  357. data/ext/third_party/asio/asio/include/asio/impl/post.hpp +147 -12
  358. data/ext/third_party/asio/asio/include/asio/impl/read.hpp +85 -18
  359. data/ext/third_party/asio/asio/include/asio/impl/read_at.hpp +59 -14
  360. data/ext/third_party/asio/asio/include/asio/impl/read_until.hpp +241 -56
  361. data/ext/third_party/asio/asio/include/asio/impl/redirect_error.hpp +22 -4
  362. data/ext/third_party/asio/asio/include/asio/impl/spawn.hpp +58 -22
  363. data/ext/third_party/asio/asio/include/asio/impl/src.hpp +3 -0
  364. data/ext/third_party/asio/asio/include/asio/impl/system_context.ipp +16 -4
  365. data/ext/third_party/asio/asio/include/asio/impl/system_executor.hpp +113 -12
  366. data/ext/third_party/asio/asio/include/asio/impl/thread_pool.hpp +260 -37
  367. data/ext/third_party/asio/asio/include/asio/impl/thread_pool.ipp +61 -7
  368. data/ext/third_party/asio/asio/include/asio/impl/use_awaitable.hpp +5 -2
  369. data/ext/third_party/asio/asio/include/asio/impl/use_future.hpp +147 -6
  370. data/ext/third_party/asio/asio/include/asio/impl/write.hpp +75 -14
  371. data/ext/third_party/asio/asio/include/asio/impl/write_at.hpp +53 -11
  372. data/ext/third_party/asio/asio/include/asio/io_context.hpp +706 -48
  373. data/ext/third_party/asio/asio/include/asio/io_context_strand.hpp +3 -1
  374. data/ext/third_party/asio/asio/include/asio/ip/basic_resolver.hpp +4 -4
  375. data/ext/third_party/asio/asio/include/asio/is_applicable_property.hpp +61 -0
  376. data/ext/third_party/asio/asio/include/asio/multiple_exceptions.hpp +58 -0
  377. data/ext/third_party/asio/asio/include/asio/posix/basic_descriptor.hpp +4 -4
  378. data/ext/third_party/asio/asio/include/asio/posix/basic_stream_descriptor.hpp +5 -5
  379. data/ext/third_party/asio/asio/include/asio/post.hpp +4 -1
  380. data/ext/third_party/asio/asio/include/asio/prefer.hpp +656 -0
  381. data/ext/third_party/asio/asio/include/asio/query.hpp +296 -0
  382. data/ext/third_party/asio/asio/include/asio/read_until.hpp +6 -6
  383. data/ext/third_party/asio/asio/include/asio/require.hpp +524 -0
  384. data/ext/third_party/asio/asio/include/asio/require_concept.hpp +310 -0
  385. data/ext/third_party/asio/asio/include/asio/spawn.hpp +12 -4
  386. data/ext/third_party/asio/asio/include/asio/ssl/detail/buffered_handshake_op.hpp +5 -0
  387. data/ext/third_party/asio/asio/include/asio/ssl/detail/engine.hpp +5 -0
  388. data/ext/third_party/asio/asio/include/asio/ssl/detail/handshake_op.hpp +5 -0
  389. data/ext/third_party/asio/asio/include/asio/ssl/detail/impl/engine.ipp +16 -3
  390. data/ext/third_party/asio/asio/include/asio/ssl/detail/io.hpp +38 -4
  391. data/ext/third_party/asio/asio/include/asio/ssl/detail/read_op.hpp +5 -0
  392. data/ext/third_party/asio/asio/include/asio/ssl/detail/shutdown_op.hpp +5 -0
  393. data/ext/third_party/asio/asio/include/asio/ssl/detail/stream_core.hpp +36 -2
  394. data/ext/third_party/asio/asio/include/asio/ssl/detail/write_op.hpp +10 -1
  395. data/ext/third_party/asio/asio/include/asio/ssl/stream.hpp +15 -0
  396. data/ext/third_party/asio/asio/include/asio/static_thread_pool.hpp +31 -0
  397. data/ext/third_party/asio/asio/include/asio/strand.hpp +232 -9
  398. data/ext/third_party/asio/asio/include/asio/system_context.hpp +12 -3
  399. data/ext/third_party/asio/asio/include/asio/system_executor.hpp +557 -24
  400. data/ext/third_party/asio/asio/include/asio/thread_pool.hpp +913 -37
  401. data/ext/third_party/asio/asio/include/asio/traits/bulk_execute_free.hpp +114 -0
  402. data/ext/third_party/asio/asio/include/asio/traits/bulk_execute_member.hpp +114 -0
  403. data/ext/third_party/asio/asio/include/asio/traits/connect_free.hpp +112 -0
  404. data/ext/third_party/asio/asio/include/asio/traits/connect_member.hpp +112 -0
  405. data/ext/third_party/asio/asio/include/asio/traits/equality_comparable.hpp +100 -0
  406. data/ext/third_party/asio/asio/include/asio/traits/execute_free.hpp +108 -0
  407. data/ext/third_party/asio/asio/include/asio/traits/execute_member.hpp +108 -0
  408. data/ext/third_party/asio/asio/include/asio/traits/prefer_free.hpp +108 -0
  409. data/ext/third_party/asio/asio/include/asio/traits/prefer_member.hpp +108 -0
  410. data/ext/third_party/asio/asio/include/asio/traits/query_free.hpp +108 -0
  411. data/ext/third_party/asio/asio/include/asio/traits/query_member.hpp +108 -0
  412. data/ext/third_party/asio/asio/include/asio/traits/query_static_constexpr_member.hpp +108 -0
  413. data/ext/third_party/asio/asio/include/asio/traits/require_concept_free.hpp +108 -0
  414. data/ext/third_party/asio/asio/include/asio/traits/require_concept_member.hpp +108 -0
  415. data/ext/third_party/asio/asio/include/asio/traits/require_free.hpp +108 -0
  416. data/ext/third_party/asio/asio/include/asio/traits/require_member.hpp +108 -0
  417. data/ext/third_party/asio/asio/include/asio/traits/schedule_free.hpp +108 -0
  418. data/ext/third_party/asio/asio/include/asio/traits/schedule_member.hpp +108 -0
  419. data/ext/third_party/asio/asio/include/asio/traits/set_done_free.hpp +108 -0
  420. data/ext/third_party/asio/asio/include/asio/traits/set_done_member.hpp +108 -0
  421. data/ext/third_party/asio/asio/include/asio/traits/set_error_free.hpp +112 -0
  422. data/ext/third_party/asio/asio/include/asio/traits/set_error_member.hpp +112 -0
  423. data/ext/third_party/asio/asio/include/asio/traits/set_value_free.hpp +234 -0
  424. data/ext/third_party/asio/asio/include/asio/traits/set_value_member.hpp +234 -0
  425. data/ext/third_party/asio/asio/include/asio/traits/start_free.hpp +108 -0
  426. data/ext/third_party/asio/asio/include/asio/traits/start_member.hpp +108 -0
  427. data/ext/third_party/asio/asio/include/asio/traits/static_query.hpp +108 -0
  428. data/ext/third_party/asio/asio/include/asio/traits/static_require.hpp +123 -0
  429. data/ext/third_party/asio/asio/include/asio/traits/static_require_concept.hpp +123 -0
  430. data/ext/third_party/asio/asio/include/asio/traits/submit_free.hpp +112 -0
  431. data/ext/third_party/asio/asio/include/asio/traits/submit_member.hpp +112 -0
  432. data/ext/third_party/asio/asio/include/asio/ts/executor.hpp +1 -0
  433. data/ext/third_party/asio/asio/include/asio/ts/netfwd.hpp +67 -8
  434. data/ext/third_party/asio/asio/include/asio/use_awaitable.hpp +63 -4
  435. data/ext/third_party/asio/asio/include/asio/version.hpp +1 -1
  436. data/ext/third_party/asio/asio/include/asio/windows/basic_object_handle.hpp +4 -4
  437. data/ext/third_party/asio/asio/include/asio/windows/basic_overlapped_handle.hpp +2 -2
  438. data/ext/third_party/asio/asio/include/asio/windows/basic_random_access_handle.hpp +5 -5
  439. data/ext/third_party/asio/asio/include/asio/windows/basic_stream_handle.hpp +5 -5
  440. data/ext/third_party/asio/asio/include/asio/windows/overlapped_ptr.hpp +4 -2
  441. data/ext/third_party/gsl/CMakeLists.txt +13 -5
  442. data/ext/third_party/gsl/include/gsl/gsl_assert +1 -1
  443. data/ext/third_party/gsl/include/gsl/gsl_byte +3 -3
  444. data/ext/third_party/gsl/include/gsl/gsl_narrow +52 -0
  445. data/ext/third_party/gsl/include/gsl/gsl_util +8 -50
  446. data/ext/third_party/gsl/include/gsl/multi_span +0 -10
  447. data/ext/third_party/gsl/include/gsl/pointers +14 -28
  448. data/ext/third_party/gsl/include/gsl/span +98 -46
  449. data/ext/third_party/gsl/include/gsl/string_span +37 -47
  450. data/ext/third_party/http_parser/http_parser.c +17 -10
  451. data/ext/third_party/http_parser/http_parser.h +4 -2
  452. data/ext/third_party/json/include/tao/json/basic_value.hpp +3 -2
  453. data/ext/third_party/json/include/tao/json/binary.hpp +4 -4
  454. data/ext/third_party/json/include/tao/json/binary_view.hpp +2 -2
  455. data/ext/third_party/json/include/tao/json/binding.hpp +2 -2
  456. data/ext/third_party/json/include/tao/json/binding/factory.hpp +8 -7
  457. data/ext/third_party/json/include/tao/json/binding/internal/array.hpp +2 -1
  458. data/ext/third_party/json/include/tao/json/binding/internal/object.hpp +6 -5
  459. data/ext/third_party/json/include/tao/json/binding/versions.hpp +3 -1
  460. data/ext/third_party/json/include/tao/json/cbor.hpp +1 -0
  461. data/ext/third_party/json/include/tao/json/cbor/consume_file.hpp +7 -7
  462. data/ext/third_party/json/include/tao/json/cbor/events/from_binary.hpp +43 -0
  463. data/ext/third_party/json/include/tao/json/cbor/events/from_file.hpp +4 -4
  464. data/ext/third_party/json/include/tao/json/cbor/events/from_string.hpp +3 -3
  465. data/ext/third_party/json/include/tao/json/cbor/from_binary.hpp +32 -0
  466. data/ext/third_party/json/include/tao/json/cbor/from_file.hpp +5 -5
  467. data/ext/third_party/json/include/tao/json/cbor/internal/grammar.hpp +2 -1
  468. data/ext/third_party/json/include/tao/json/consume_file.hpp +7 -7
  469. data/ext/third_party/json/include/tao/json/contrib/internal/indirect_traits.hpp +13 -6
  470. data/ext/third_party/json/include/tao/json/contrib/position.hpp +15 -15
  471. data/ext/third_party/json/include/tao/json/contrib/reference.hpp +5 -7
  472. data/ext/third_party/json/include/tao/json/contrib/schema.hpp +58 -35
  473. data/ext/third_party/json/include/tao/json/contrib/shared_ptr_traits.hpp +12 -4
  474. data/ext/third_party/json/include/tao/json/contrib/unique_ptr_traits.hpp +12 -4
  475. data/ext/third_party/json/include/tao/json/contrib/unordered_map_traits.hpp +1 -1
  476. data/ext/third_party/json/include/tao/json/contrib/unordered_set_traits.hpp +2 -2
  477. data/ext/third_party/json/include/tao/json/events/compare.hpp +2 -12
  478. data/ext/third_party/json/include/tao/json/events/from_file.hpp +4 -4
  479. data/ext/third_party/json/include/tao/json/events/from_string.hpp +2 -2
  480. data/ext/third_party/json/include/tao/json/events/invalid_string_to_binary.hpp +1 -1
  481. data/ext/third_party/json/include/tao/json/events/key_camel_case_to_snake_case.hpp +3 -3
  482. data/ext/third_party/json/include/tao/json/events/key_snake_case_to_camel_case.hpp +1 -1
  483. data/ext/third_party/json/include/tao/json/events/tee.hpp +2 -2
  484. data/ext/third_party/json/include/tao/json/events/to_pretty_stream.hpp +1 -1
  485. data/ext/third_party/json/include/tao/json/events/to_stream.hpp +1 -1
  486. data/ext/third_party/json/include/tao/json/events/transformer.hpp +3 -3
  487. data/ext/third_party/json/include/tao/json/events/validate_event_order.hpp +3 -3
  488. data/ext/third_party/json/include/tao/json/events/virtual_ref.hpp +6 -0
  489. data/ext/third_party/json/include/tao/json/external/pegtl.hpp +4 -13
  490. data/ext/third_party/json/include/tao/json/external/pegtl/argv_input.hpp +3 -5
  491. data/ext/third_party/json/include/tao/json/external/pegtl/ascii.hpp +5 -18
  492. data/ext/third_party/json/include/tao/json/external/pegtl/buffer_input.hpp +3 -3
  493. data/ext/third_party/json/include/tao/json/external/pegtl/change_action.hpp +2 -2
  494. data/ext/third_party/json/include/tao/json/external/pegtl/change_action_and_state.hpp +6 -6
  495. data/ext/third_party/json/include/tao/json/external/pegtl/change_action_and_states.hpp +5 -5
  496. data/ext/third_party/json/include/tao/json/external/pegtl/change_control.hpp +2 -2
  497. data/ext/third_party/json/include/tao/json/external/pegtl/change_state.hpp +6 -6
  498. data/ext/third_party/json/include/tao/json/external/pegtl/change_states.hpp +5 -5
  499. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/alphabet.hpp +52 -52
  500. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/analyze.hpp +176 -0
  501. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/analyze_traits.hpp +275 -0
  502. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/control_action.hpp +77 -0
  503. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/coverage.hpp +151 -0
  504. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/forward.hpp +16 -0
  505. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/http.hpp +37 -18
  506. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/internal.hpp +20 -22
  507. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/utf16.hpp +6 -10
  508. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/utf32.hpp +6 -10
  509. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/icu/utf8.hpp +2 -4
  510. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/if_then.hpp +11 -10
  511. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/integer.hpp +116 -131
  512. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/endian.hpp +4 -4
  513. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/endian_gcc.hpp +2 -2
  514. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/endian_win.hpp +2 -2
  515. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_mask_uint.hpp +9 -9
  516. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_mask_uint8.hpp +9 -10
  517. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_uint.hpp +9 -9
  518. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_uint8.hpp +9 -10
  519. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_utf16.hpp +10 -10
  520. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/peek_utf32.hpp +9 -9
  521. data/ext/third_party/json/include/tao/json/external/pegtl/{internal → contrib/internal}/read_uint.hpp +3 -3
  522. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/internal/set_stack_guard.hpp +52 -0
  523. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/parse_tree.hpp +80 -201
  524. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/parse_tree_to_dot.hpp +11 -10
  525. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/print.hpp +75 -0
  526. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/print_coverage.hpp +53 -0
  527. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/raw_string.hpp +45 -36
  528. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/remove_first_state.hpp +33 -50
  529. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/remove_last_states.hpp +117 -0
  530. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/rep_one_min_max.hpp +43 -11
  531. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/rep_string.hpp +1 -2
  532. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/shuffle_states.hpp +193 -0
  533. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/state_control.hpp +118 -0
  534. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/trace.hpp +227 -0
  535. data/ext/third_party/json/include/tao/json/external/pegtl/{uint16.hpp → contrib/uint16.hpp} +5 -5
  536. data/ext/third_party/json/include/tao/json/external/pegtl/{uint32.hpp → contrib/uint32.hpp} +5 -5
  537. data/ext/third_party/json/include/tao/json/external/pegtl/{uint64.hpp → contrib/uint64.hpp} +5 -5
  538. data/ext/third_party/json/include/tao/json/external/pegtl/{uint8.hpp → contrib/uint8.hpp} +5 -5
  539. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/unescape.hpp +14 -14
  540. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/uri.hpp +1 -1
  541. data/ext/third_party/json/include/tao/json/external/pegtl/{utf16.hpp → contrib/utf16.hpp} +5 -5
  542. data/ext/third_party/json/include/tao/json/external/pegtl/{utf32.hpp → contrib/utf32.hpp} +5 -5
  543. data/ext/third_party/json/include/tao/json/external/pegtl/cstream_input.hpp +2 -3
  544. data/ext/third_party/json/include/tao/json/external/pegtl/{internal/demangle.hpp → demangle.hpp} +12 -14
  545. data/ext/third_party/json/include/tao/json/external/pegtl/disable_action.hpp +2 -2
  546. data/ext/third_party/json/include/tao/json/external/pegtl/discard_input.hpp +2 -2
  547. data/ext/third_party/json/include/tao/json/external/pegtl/discard_input_on_failure.hpp +2 -2
  548. data/ext/third_party/json/include/tao/json/external/pegtl/discard_input_on_success.hpp +2 -2
  549. data/ext/third_party/json/include/tao/json/external/pegtl/enable_action.hpp +2 -2
  550. data/ext/third_party/json/include/tao/json/external/pegtl/file_input.hpp +1 -1
  551. data/ext/third_party/json/include/tao/json/external/pegtl/internal/action.hpp +19 -9
  552. data/ext/third_party/json/include/tao/json/external/pegtl/internal/action_input.hpp +7 -8
  553. data/ext/third_party/json/include/tao/json/external/pegtl/internal/any.hpp +14 -14
  554. data/ext/third_party/json/include/tao/json/external/pegtl/internal/apply.hpp +9 -9
  555. data/ext/third_party/json/include/tao/json/external/pegtl/internal/apply0.hpp +8 -7
  556. data/ext/third_party/json/include/tao/json/external/pegtl/internal/apply_single.hpp +4 -4
  557. data/ext/third_party/json/include/tao/json/external/pegtl/internal/at.hpp +17 -15
  558. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bof.hpp +7 -6
  559. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bol.hpp +8 -8
  560. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bump.hpp +4 -4
  561. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bump_help.hpp +3 -3
  562. data/ext/third_party/json/include/tao/json/external/pegtl/internal/bytes.hpp +17 -10
  563. data/ext/third_party/json/include/tao/json/external/pegtl/internal/control.hpp +19 -9
  564. data/ext/third_party/json/include/tao/json/external/pegtl/internal/cr_crlf_eol.hpp +2 -2
  565. data/ext/third_party/json/include/tao/json/external/pegtl/internal/cr_eol.hpp +2 -2
  566. data/ext/third_party/json/include/tao/json/external/pegtl/internal/crlf_eol.hpp +2 -2
  567. data/ext/third_party/json/include/tao/json/external/pegtl/internal/cstream_reader.hpp +1 -1
  568. data/ext/third_party/json/include/tao/json/external/pegtl/internal/{always_false.hpp → dependent_false.hpp} +3 -8
  569. data/ext/third_party/json/include/tao/json/external/pegtl/internal/disable.hpp +19 -9
  570. data/ext/third_party/json/include/tao/json/external/pegtl/internal/discard.hpp +7 -6
  571. data/ext/third_party/json/include/tao/json/external/pegtl/internal/enable.hpp +19 -9
  572. data/ext/third_party/json/include/tao/json/external/pegtl/internal/{skip_control.hpp → enable_control.hpp} +5 -5
  573. data/ext/third_party/json/include/tao/json/external/pegtl/internal/eof.hpp +7 -6
  574. data/ext/third_party/json/include/tao/json/external/pegtl/internal/eol.hpp +8 -7
  575. data/ext/third_party/json/include/tao/json/external/pegtl/internal/eolf.hpp +8 -7
  576. data/ext/third_party/json/include/tao/json/external/pegtl/internal/failure.hpp +32 -0
  577. data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_mapper_posix.hpp +61 -10
  578. data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_mapper_win32.hpp +27 -33
  579. data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_reader.hpp +27 -28
  580. data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_apply.hpp +3 -7
  581. data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_apply0.hpp +3 -7
  582. data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_match.hpp +4 -20
  583. data/ext/third_party/json/include/tao/json/external/pegtl/internal/has_unwind.hpp +21 -0
  584. data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_apply.hpp +8 -7
  585. data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_must.hpp +8 -9
  586. data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_must_else.hpp +2 -0
  587. data/ext/third_party/json/include/tao/json/external/pegtl/internal/if_then_else.hpp +7 -7
  588. data/ext/third_party/json/include/tao/json/external/pegtl/internal/istream_reader.hpp +1 -2
  589. data/ext/third_party/json/include/tao/json/external/pegtl/internal/istring.hpp +11 -11
  590. data/ext/third_party/json/include/tao/json/external/pegtl/internal/iterator.hpp +7 -10
  591. data/ext/third_party/json/include/tao/json/external/pegtl/internal/lf_crlf_eol.hpp +2 -2
  592. data/ext/third_party/json/include/tao/json/external/pegtl/internal/lf_eol.hpp +2 -2
  593. data/ext/third_party/json/include/tao/json/external/pegtl/internal/list_tail.hpp +4 -2
  594. data/ext/third_party/json/include/tao/json/external/pegtl/internal/list_tail_pad.hpp +1 -1
  595. data/ext/third_party/json/include/tao/json/external/pegtl/internal/marker.hpp +3 -5
  596. data/ext/third_party/json/include/tao/json/external/pegtl/internal/minus.hpp +21 -0
  597. data/ext/third_party/json/include/tao/json/external/pegtl/internal/missing_apply.hpp +5 -2
  598. data/ext/third_party/json/include/tao/json/external/pegtl/internal/missing_apply0.hpp +5 -2
  599. data/ext/third_party/json/include/tao/json/external/pegtl/internal/must.hpp +16 -24
  600. data/ext/third_party/json/include/tao/json/external/pegtl/internal/not_at.hpp +17 -15
  601. data/ext/third_party/json/include/tao/json/external/pegtl/internal/one.hpp +23 -12
  602. data/ext/third_party/json/include/tao/json/external/pegtl/internal/opt.hpp +16 -16
  603. data/ext/third_party/json/include/tao/json/external/pegtl/internal/path_to_string.hpp +26 -0
  604. data/ext/third_party/json/include/tao/json/external/pegtl/internal/peek_char.hpp +5 -5
  605. data/ext/third_party/json/include/tao/json/external/pegtl/internal/peek_utf8.hpp +12 -13
  606. data/ext/third_party/json/include/tao/json/external/pegtl/internal/plus.hpp +18 -11
  607. data/ext/third_party/json/include/tao/json/external/pegtl/internal/raise.hpp +8 -17
  608. data/ext/third_party/json/include/tao/json/external/pegtl/internal/range.hpp +22 -17
  609. data/ext/third_party/json/include/tao/json/external/pegtl/internal/ranges.hpp +28 -18
  610. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rematch.hpp +12 -9
  611. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rep.hpp +26 -25
  612. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rep_min_max.hpp +23 -21
  613. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rep_opt.hpp +24 -9
  614. data/ext/third_party/json/include/tao/json/external/pegtl/internal/require.hpp +10 -10
  615. data/ext/third_party/json/include/tao/json/external/pegtl/internal/rules.hpp +4 -4
  616. data/ext/third_party/json/include/tao/json/external/pegtl/internal/seq.hpp +18 -33
  617. data/ext/third_party/json/include/tao/json/external/pegtl/internal/sor.hpp +24 -17
  618. data/ext/third_party/json/include/tao/json/external/pegtl/internal/star.hpp +13 -8
  619. data/ext/third_party/json/include/tao/json/external/pegtl/internal/state.hpp +21 -11
  620. data/ext/third_party/json/include/tao/json/external/pegtl/internal/string.hpp +11 -11
  621. data/ext/third_party/json/include/tao/json/external/pegtl/internal/success.hpp +32 -0
  622. data/ext/third_party/json/include/tao/json/external/pegtl/internal/try_catch_type.hpp +16 -16
  623. data/ext/third_party/json/include/tao/json/external/pegtl/internal/until.hpp +18 -14
  624. data/ext/third_party/json/include/tao/json/external/pegtl/istream_input.hpp +2 -3
  625. data/ext/third_party/json/include/tao/json/external/pegtl/match.hpp +125 -29
  626. data/ext/third_party/json/include/tao/json/external/pegtl/memory_input.hpp +32 -48
  627. data/ext/third_party/json/include/tao/json/external/pegtl/mmap_input.hpp +16 -16
  628. data/ext/third_party/json/include/tao/json/external/pegtl/must_if.hpp +64 -0
  629. data/ext/third_party/json/include/tao/json/external/pegtl/normal.hpp +25 -25
  630. data/ext/third_party/json/include/tao/json/external/pegtl/nothing.hpp +1 -2
  631. data/ext/third_party/json/include/tao/json/external/pegtl/parse.hpp +6 -8
  632. data/ext/third_party/json/include/tao/json/external/pegtl/parse_error.hpp +80 -35
  633. data/ext/third_party/json/include/tao/json/external/pegtl/position.hpp +18 -10
  634. data/ext/third_party/json/include/tao/json/external/pegtl/read_input.hpp +18 -38
  635. data/ext/third_party/json/include/tao/json/external/pegtl/rules.hpp +6 -5
  636. data/ext/third_party/json/include/tao/json/external/pegtl/string_input.hpp +3 -5
  637. data/ext/third_party/json/include/tao/json/external/pegtl/type_list.hpp +46 -0
  638. data/ext/third_party/json/include/tao/json/external/pegtl/visit.hpp +66 -0
  639. data/ext/third_party/json/include/tao/json/from_file.hpp +5 -5
  640. data/ext/third_party/json/include/tao/json/internal/action.hpp +3 -3
  641. data/ext/third_party/json/include/tao/json/internal/dependent_false.hpp +14 -0
  642. data/ext/third_party/json/include/tao/json/internal/errors.hpp +17 -17
  643. data/ext/third_party/json/include/tao/json/internal/format.hpp +0 -2
  644. data/ext/third_party/json/include/tao/json/internal/grammar.hpp +17 -17
  645. data/ext/third_party/json/include/tao/json/internal/pair.hpp +1 -1
  646. data/ext/third_party/json/include/tao/json/internal/sha256.hpp +8 -8
  647. data/ext/third_party/json/include/tao/json/internal/single.hpp +1 -1
  648. data/ext/third_party/json/include/tao/json/internal/type_traits.hpp +12 -29
  649. data/ext/third_party/json/include/tao/json/jaxn/consume_file.hpp +7 -7
  650. data/ext/third_party/json/include/tao/json/jaxn/events/from_file.hpp +4 -4
  651. data/ext/third_party/json/include/tao/json/jaxn/events/from_string.hpp +2 -2
  652. data/ext/third_party/json/include/tao/json/jaxn/from_file.hpp +5 -5
  653. data/ext/third_party/json/include/tao/json/jaxn/internal/action.hpp +6 -6
  654. data/ext/third_party/json/include/tao/json/jaxn/internal/bunescape_action.hpp +2 -2
  655. data/ext/third_party/json/include/tao/json/jaxn/internal/errors.hpp +43 -43
  656. data/ext/third_party/json/include/tao/json/jaxn/internal/grammar.hpp +36 -36
  657. data/ext/third_party/json/include/tao/json/jaxn/internal/integer.hpp +10 -11
  658. data/ext/third_party/json/include/tao/json/jaxn/is_identifier.hpp +2 -2
  659. data/ext/third_party/json/include/tao/json/jaxn/parts_parser.hpp +1 -3
  660. data/ext/third_party/json/include/tao/json/message_extension.hpp +2 -2
  661. data/ext/third_party/json/include/tao/json/msgpack.hpp +1 -0
  662. data/ext/third_party/json/include/tao/json/msgpack/consume_file.hpp +7 -7
  663. data/ext/third_party/json/include/tao/json/msgpack/events/from_binary.hpp +43 -0
  664. data/ext/third_party/json/include/tao/json/msgpack/events/from_file.hpp +4 -4
  665. data/ext/third_party/json/include/tao/json/msgpack/events/from_string.hpp +4 -4
  666. data/ext/third_party/json/include/tao/json/msgpack/events/to_stream.hpp +4 -4
  667. data/ext/third_party/json/include/tao/json/msgpack/from_binary.hpp +32 -0
  668. data/ext/third_party/json/include/tao/json/msgpack/from_file.hpp +5 -5
  669. data/ext/third_party/json/include/tao/json/msgpack/internal/grammar.hpp +2 -1
  670. data/ext/third_party/json/include/tao/json/operators.hpp +0 -4
  671. data/ext/third_party/json/include/tao/json/parts_parser.hpp +3 -7
  672. data/ext/third_party/json/include/tao/json/self_contained.hpp +6 -18
  673. data/ext/third_party/json/include/tao/json/span.hpp +94 -166
  674. data/ext/third_party/json/include/tao/json/ubjson.hpp +1 -0
  675. data/ext/third_party/json/include/tao/json/ubjson/consume_file.hpp +7 -7
  676. data/ext/third_party/json/include/tao/json/ubjson/events/from_binary.hpp +43 -0
  677. data/ext/third_party/json/include/tao/json/ubjson/events/from_file.hpp +4 -4
  678. data/ext/third_party/json/include/tao/json/ubjson/events/from_string.hpp +3 -3
  679. data/ext/third_party/json/include/tao/json/ubjson/from_binary.hpp +32 -0
  680. data/ext/third_party/json/include/tao/json/ubjson/from_file.hpp +5 -5
  681. data/ext/third_party/json/include/tao/json/ubjson/internal/grammar.hpp +5 -3
  682. data/ext/third_party/json/include/tao/json/utf8.hpp +1 -1
  683. data/ext/third_party/snappy/snappy.cc +6 -2
  684. data/ext/third_party/spdlog/CMakeLists.txt +24 -57
  685. data/ext/third_party/spdlog/cmake/version.rc.in +1 -1
  686. data/ext/third_party/spdlog/include/spdlog/async.h +3 -3
  687. data/ext/third_party/spdlog/include/spdlog/cfg/argv.h +3 -4
  688. data/ext/third_party/spdlog/include/spdlog/cfg/env.h +6 -4
  689. data/ext/third_party/spdlog/include/spdlog/cfg/helpers-inl.h +22 -6
  690. data/ext/third_party/spdlog/include/spdlog/cfg/helpers.h +3 -2
  691. data/ext/third_party/spdlog/include/spdlog/common.h +1 -2
  692. data/ext/third_party/spdlog/include/spdlog/details/fmt_helper.h +9 -1
  693. data/ext/third_party/spdlog/include/spdlog/details/os.h +1 -1
  694. data/ext/third_party/spdlog/include/spdlog/details/registry-inl.h +21 -7
  695. data/ext/third_party/spdlog/include/spdlog/details/registry.h +6 -3
  696. data/ext/third_party/spdlog/include/spdlog/details/synchronous_factory.h +1 -1
  697. data/ext/third_party/spdlog/include/spdlog/details/tcp_client-windows.h +1 -1
  698. data/ext/third_party/spdlog/include/spdlog/details/tcp_client.h +8 -7
  699. data/ext/third_party/spdlog/include/spdlog/fmt/bin_to_hex.h +2 -2
  700. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/chrono.h +66 -62
  701. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/color.h +35 -37
  702. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/compile.h +173 -103
  703. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/core.h +538 -445
  704. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/format-inl.h +114 -64
  705. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/format.h +1152 -1071
  706. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/locale.h +16 -16
  707. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/os.h +450 -0
  708. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/ostream.h +37 -13
  709. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/posix.h +1 -1
  710. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/printf.h +93 -63
  711. data/ext/third_party/spdlog/include/spdlog/fmt/bundled/ranges.h +35 -36
  712. data/ext/third_party/spdlog/include/spdlog/fmt/chrono.h +20 -0
  713. data/ext/third_party/spdlog/include/spdlog/fmt/fmt.h +2 -0
  714. data/ext/third_party/spdlog/include/spdlog/logger-inl.h +5 -1
  715. data/ext/third_party/spdlog/include/spdlog/logger.h +50 -76
  716. data/ext/third_party/spdlog/include/spdlog/pattern_formatter-inl.h +23 -8
  717. data/ext/third_party/spdlog/include/spdlog/pattern_formatter.h +3 -3
  718. data/ext/third_party/spdlog/include/spdlog/sinks/daily_file_sink.h +1 -1
  719. data/ext/third_party/spdlog/include/spdlog/sinks/msvc_sink.h +5 -5
  720. data/ext/third_party/spdlog/include/spdlog/sinks/ringbuffer_sink.h +6 -4
  721. data/ext/third_party/spdlog/include/spdlog/sinks/stdout_sinks-inl.h +32 -3
  722. data/ext/third_party/spdlog/include/spdlog/sinks/stdout_sinks.h +7 -0
  723. data/ext/third_party/spdlog/include/spdlog/sinks/wincolor_sink-inl.h +4 -14
  724. data/ext/third_party/spdlog/include/spdlog/spdlog-inl.h +11 -1
  725. data/ext/third_party/spdlog/include/spdlog/spdlog.h +23 -68
  726. data/ext/third_party/spdlog/include/spdlog/stopwatch.h +61 -0
  727. data/ext/third_party/spdlog/include/spdlog/version.h +2 -2
  728. data/ext/third_party/spdlog/src/fmt.cpp +21 -147
  729. data/lib/active_support/cache/couchbase_store.rb +362 -0
  730. data/lib/couchbase.rb +3 -1
  731. data/lib/couchbase/analytics_options.rb +2 -74
  732. data/lib/couchbase/authenticator.rb +41 -1
  733. data/lib/couchbase/binary_collection.rb +63 -24
  734. data/lib/couchbase/binary_collection_options.rb +1 -75
  735. data/lib/couchbase/bucket.rb +43 -38
  736. data/lib/couchbase/cluster.rb +225 -127
  737. data/lib/couchbase/collection.rb +323 -92
  738. data/lib/couchbase/collection_options.rb +73 -239
  739. data/lib/couchbase/configuration.rb +57 -0
  740. data/lib/couchbase/datastructures.rb +7 -1
  741. data/lib/couchbase/datastructures/couchbase_list.rb +22 -33
  742. data/lib/couchbase/datastructures/couchbase_map.rb +24 -35
  743. data/lib/couchbase/datastructures/couchbase_queue.rb +19 -30
  744. data/lib/couchbase/datastructures/couchbase_set.rb +14 -24
  745. data/lib/couchbase/diagnostics.rb +181 -0
  746. data/lib/couchbase/errors.rb +125 -7
  747. data/lib/couchbase/json_transcoder.rb +4 -4
  748. data/lib/couchbase/logger.rb +42 -0
  749. data/lib/couchbase/management.rb +27 -0
  750. data/lib/couchbase/management/analytics_index_manager.rb +38 -38
  751. data/lib/couchbase/management/bucket_manager.rb +71 -31
  752. data/lib/couchbase/management/collection_manager.rb +12 -5
  753. data/lib/couchbase/management/query_index_manager.rb +61 -16
  754. data/lib/couchbase/management/search_index_manager.rb +58 -14
  755. data/lib/couchbase/management/user_manager.rb +176 -50
  756. data/lib/couchbase/management/view_index_manager.rb +12 -6
  757. data/lib/couchbase/mutation_state.rb +13 -1
  758. data/lib/couchbase/options.rb +2113 -0
  759. data/lib/couchbase/query_options.rb +6 -128
  760. data/lib/couchbase/railtie.rb +45 -0
  761. data/lib/couchbase/scope.rb +88 -2
  762. data/lib/couchbase/search_options.rb +99 -111
  763. data/lib/couchbase/subdoc.rb +32 -29
  764. data/{Gemfile → lib/couchbase/utils.rb} +5 -17
  765. data/lib/couchbase/utils/time.rb +52 -0
  766. data/lib/couchbase/version.rb +22 -3
  767. data/lib/couchbase/view_options.rb +2 -93
  768. data/lib/{couchbase/common_options.rb → rails/generators/couchbase/config/config_generator.rb} +10 -12
  769. metadata +212 -269
  770. data/.yardopts +0 -1
  771. data/Rakefile +0 -51
  772. data/couchbase.gemspec +0 -78
  773. data/examples/analytics.rb +0 -221
  774. data/examples/crud.rb +0 -20
  775. data/examples/managing_analytics_indexes.rb +0 -72
  776. data/examples/managing_buckets.rb +0 -47
  777. data/examples/managing_collections.rb +0 -58
  778. data/examples/managing_query_indexes.rb +0 -63
  779. data/examples/managing_search_indexes.rb +0 -62
  780. data/examples/managing_view_indexes.rb +0 -54
  781. data/examples/query.rb +0 -18
  782. data/examples/query_with_consistency.rb +0 -76
  783. data/examples/search.rb +0 -187
  784. data/examples/search_with_consistency.rb +0 -84
  785. data/examples/subdocument.rb +0 -51
  786. data/examples/view.rb +0 -50
  787. data/ext/.clang-format +0 -15
  788. data/ext/.clang-tidy +0 -22
  789. data/ext/.cmake-format.yaml +0 -8
  790. data/ext/.gitignore +0 -2
  791. data/ext/.idea/.name +0 -1
  792. data/ext/.idea/dictionaries/couchbase_terms.xml +0 -14
  793. data/ext/.idea/ext.iml +0 -2
  794. data/ext/.idea/misc.xml +0 -16
  795. data/ext/.idea/modules.xml +0 -8
  796. data/ext/.idea/vcs.xml +0 -12
  797. data/ext/test/main.cxx +0 -136
  798. data/ext/third_party/asio/.appveyor.yml +0 -107
  799. data/ext/third_party/asio/.cirrus.yml +0 -16
  800. data/ext/third_party/asio/.gitignore +0 -3
  801. data/ext/third_party/asio/.travis.yml +0 -323
  802. data/ext/third_party/asio/asio/.gitignore +0 -23
  803. data/ext/third_party/asio/asio/COPYING +0 -4
  804. data/ext/third_party/asio/asio/INSTALL +0 -5
  805. data/ext/third_party/asio/asio/LICENSE_1_0.txt +0 -23
  806. data/ext/third_party/asio/asio/Makefile.am +0 -19
  807. data/ext/third_party/asio/asio/README +0 -4
  808. data/ext/third_party/asio/asio/asio.manifest +0 -4865
  809. data/ext/third_party/asio/asio/autogen.sh +0 -55
  810. data/ext/third_party/asio/asio/boost_asio.manifest +0 -5193
  811. data/ext/third_party/asio/asio/boostify.pl +0 -603
  812. data/ext/third_party/asio/asio/configure.ac +0 -182
  813. data/ext/third_party/asio/asio/include/.gitignore +0 -2
  814. data/ext/third_party/asio/asio/include/Makefile.am +0 -484
  815. data/ext/third_party/asio/asio/include/asio/detail/io_object_executor.hpp +0 -167
  816. data/ext/third_party/asio/asio/include/asio/impl/src.cpp +0 -25
  817. data/ext/third_party/asio/asio/release.pl +0 -440
  818. data/ext/third_party/asio/asio/src/.gitignore +0 -11
  819. data/ext/third_party/asio/asio/src/Makefile.am +0 -23
  820. data/ext/third_party/asio/asio/src/Makefile.mgw +0 -204
  821. data/ext/third_party/asio/asio/src/Makefile.msc +0 -497
  822. data/ext/third_party/asio/asio/src/asio.cpp +0 -11
  823. data/ext/third_party/asio/asio/src/asio_ssl.cpp +0 -11
  824. data/ext/third_party/asio/asio/src/doc/.gitignore +0 -5
  825. data/ext/third_party/asio/asio/src/doc/Jamfile.v2 +0 -62
  826. data/ext/third_party/asio/asio/src/doc/asio.png +0 -0
  827. data/ext/third_party/asio/asio/src/doc/asio.qbk +0 -127
  828. data/ext/third_party/asio/asio/src/doc/asioref.sty +0 -90
  829. data/ext/third_party/asio/asio/src/doc/asioref.xsl +0 -94
  830. data/ext/third_party/asio/asio/src/doc/boost_bind_dox.txt +0 -5
  831. data/ext/third_party/asio/asio/src/doc/doxy2qbk.pl +0 -22
  832. data/ext/third_party/asio/asio/src/doc/examples.qbk +0 -564
  833. data/ext/third_party/asio/asio/src/doc/history.qbk +0 -1794
  834. data/ext/third_party/asio/asio/src/doc/index.xml +0 -13
  835. data/ext/third_party/asio/asio/src/doc/makepdf.pl +0 -26
  836. data/ext/third_party/asio/asio/src/doc/net_ts.qbk +0 -479
  837. data/ext/third_party/asio/asio/src/doc/noncopyable_dox.txt +0 -3
  838. data/ext/third_party/asio/asio/src/doc/overview.qbk +0 -103
  839. data/ext/third_party/asio/asio/src/doc/overview/allocation.qbk +0 -89
  840. data/ext/third_party/asio/asio/src/doc/overview/async.qbk +0 -185
  841. data/ext/third_party/asio/asio/src/doc/overview/async_op1.dot +0 -78
  842. data/ext/third_party/asio/asio/src/doc/overview/async_op1.png +0 -0
  843. data/ext/third_party/asio/asio/src/doc/overview/async_op2.dot +0 -78
  844. data/ext/third_party/asio/asio/src/doc/overview/async_op2.png +0 -0
  845. data/ext/third_party/asio/asio/src/doc/overview/basics.qbk +0 -106
  846. data/ext/third_party/asio/asio/src/doc/overview/bsd_sockets.qbk +0 -270
  847. data/ext/third_party/asio/asio/src/doc/overview/buffers.qbk +0 -163
  848. data/ext/third_party/asio/asio/src/doc/overview/concurrency_hint.qbk +0 -88
  849. data/ext/third_party/asio/asio/src/doc/overview/coroutine.qbk +0 -51
  850. data/ext/third_party/asio/asio/src/doc/overview/coroutines_ts.qbk +0 -97
  851. data/ext/third_party/asio/asio/src/doc/overview/cpp2011.qbk +0 -271
  852. data/ext/third_party/asio/asio/src/doc/overview/handler_tracking.qbk +0 -220
  853. data/ext/third_party/asio/asio/src/doc/overview/implementation.qbk +0 -305
  854. data/ext/third_party/asio/asio/src/doc/overview/iostreams.qbk +0 -72
  855. data/ext/third_party/asio/asio/src/doc/overview/line_based.qbk +0 -118
  856. data/ext/third_party/asio/asio/src/doc/overview/other_protocols.qbk +0 -94
  857. data/ext/third_party/asio/asio/src/doc/overview/posix.qbk +0 -152
  858. data/ext/third_party/asio/asio/src/doc/overview/proactor.dot +0 -100
  859. data/ext/third_party/asio/asio/src/doc/overview/proactor.png +0 -0
  860. data/ext/third_party/asio/asio/src/doc/overview/protocols.qbk +0 -149
  861. data/ext/third_party/asio/asio/src/doc/overview/rationale.qbk +0 -54
  862. data/ext/third_party/asio/asio/src/doc/overview/reactor.qbk +0 -44
  863. data/ext/third_party/asio/asio/src/doc/overview/serial_ports.qbk +0 -45
  864. data/ext/third_party/asio/asio/src/doc/overview/signals.qbk +0 -44
  865. data/ext/third_party/asio/asio/src/doc/overview/spawn.qbk +0 -102
  866. data/ext/third_party/asio/asio/src/doc/overview/ssl.qbk +0 -124
  867. data/ext/third_party/asio/asio/src/doc/overview/strands.qbk +0 -114
  868. data/ext/third_party/asio/asio/src/doc/overview/streams.qbk +0 -62
  869. data/ext/third_party/asio/asio/src/doc/overview/sync_op.dot +0 -67
  870. data/ext/third_party/asio/asio/src/doc/overview/sync_op.png +0 -0
  871. data/ext/third_party/asio/asio/src/doc/overview/threads.qbk +0 -67
  872. data/ext/third_party/asio/asio/src/doc/overview/timers.qbk +0 -52
  873. data/ext/third_party/asio/asio/src/doc/overview/windows.qbk +0 -126
  874. data/ext/third_party/asio/asio/src/doc/project-root.jam +0 -1
  875. data/ext/third_party/asio/asio/src/doc/quickref.xml +0 -561
  876. data/ext/third_party/asio/asio/src/doc/reference.dox +0 -264
  877. data/ext/third_party/asio/asio/src/doc/reference.qbk +0 -125973
  878. data/ext/third_party/asio/asio/src/doc/reference.xsl +0 -1831
  879. data/ext/third_party/asio/asio/src/doc/release_checklist.htm +0 -68
  880. data/ext/third_party/asio/asio/src/doc/requirements/AcceptHandler.qbk +0 -72
  881. data/ext/third_party/asio/asio/src/doc/requirements/AcceptableProtocol.qbk +0 -25
  882. data/ext/third_party/asio/asio/src/doc/requirements/AsyncRandomAccessReadDevice.qbk +0 -56
  883. data/ext/third_party/asio/asio/src/doc/requirements/AsyncRandomAccessWriteDevice.qbk +0 -57
  884. data/ext/third_party/asio/asio/src/doc/requirements/AsyncReadStream.qbk +0 -50
  885. data/ext/third_party/asio/asio/src/doc/requirements/AsyncWriteStream.qbk +0 -48
  886. data/ext/third_party/asio/asio/src/doc/requirements/BufferedHandshakeHandler.qbk +0 -55
  887. data/ext/third_party/asio/asio/src/doc/requirements/CompletionCondition.qbk +0 -42
  888. data/ext/third_party/asio/asio/src/doc/requirements/CompletionHandler.qbk +0 -63
  889. data/ext/third_party/asio/asio/src/doc/requirements/ConnectCondition.qbk +0 -34
  890. data/ext/third_party/asio/asio/src/doc/requirements/ConnectHandler.qbk +0 -72
  891. data/ext/third_party/asio/asio/src/doc/requirements/ConstBufferSequence.qbk +0 -53
  892. data/ext/third_party/asio/asio/src/doc/requirements/DynamicBuffer.qbk +0 -16
  893. data/ext/third_party/asio/asio/src/doc/requirements/DynamicBuffer_v1.qbk +0 -93
  894. data/ext/third_party/asio/asio/src/doc/requirements/DynamicBuffer_v2.qbk +0 -94
  895. data/ext/third_party/asio/asio/src/doc/requirements/Endpoint.qbk +0 -97
  896. data/ext/third_party/asio/asio/src/doc/requirements/EndpointSequence.qbk +0 -30
  897. data/ext/third_party/asio/asio/src/doc/requirements/ExecutionContext.qbk +0 -36
  898. data/ext/third_party/asio/asio/src/doc/requirements/Executor.qbk +0 -141
  899. data/ext/third_party/asio/asio/src/doc/requirements/GettableSerialPortOption.qbk +0 -33
  900. data/ext/third_party/asio/asio/src/doc/requirements/GettableSocketOption.qbk +0 -67
  901. data/ext/third_party/asio/asio/src/doc/requirements/Handler.qbk +0 -64
  902. data/ext/third_party/asio/asio/src/doc/requirements/HandshakeHandler.qbk +0 -72
  903. data/ext/third_party/asio/asio/src/doc/requirements/InternetProtocol.qbk +0 -47
  904. data/ext/third_party/asio/asio/src/doc/requirements/IoControlCommand.qbk +0 -34
  905. data/ext/third_party/asio/asio/src/doc/requirements/IoObjectService.qbk +0 -62
  906. data/ext/third_party/asio/asio/src/doc/requirements/IteratorConnectHandler.qbk +0 -81
  907. data/ext/third_party/asio/asio/src/doc/requirements/LegacyCompletionHandler.qbk +0 -65
  908. data/ext/third_party/asio/asio/src/doc/requirements/MoveAcceptHandler.qbk +0 -61
  909. data/ext/third_party/asio/asio/src/doc/requirements/MutableBufferSequence.qbk +0 -54
  910. data/ext/third_party/asio/asio/src/doc/requirements/ProtoAllocator.qbk +0 -19
  911. data/ext/third_party/asio/asio/src/doc/requirements/Protocol.qbk +0 -56
  912. data/ext/third_party/asio/asio/src/doc/requirements/RangeConnectHandler.qbk +0 -82
  913. data/ext/third_party/asio/asio/src/doc/requirements/ReadHandler.qbk +0 -79
  914. data/ext/third_party/asio/asio/src/doc/requirements/ResolveHandler.qbk +0 -82
  915. data/ext/third_party/asio/asio/src/doc/requirements/Service.qbk +0 -40
  916. data/ext/third_party/asio/asio/src/doc/requirements/SettableSerialPortOption.qbk +0 -33
  917. data/ext/third_party/asio/asio/src/doc/requirements/SettableSocketOption.qbk +0 -54
  918. data/ext/third_party/asio/asio/src/doc/requirements/ShutdownHandler.qbk +0 -72
  919. data/ext/third_party/asio/asio/src/doc/requirements/SignalHandler.qbk +0 -79
  920. data/ext/third_party/asio/asio/src/doc/requirements/SyncRandomAccessReadDevice.qbk +0 -49
  921. data/ext/third_party/asio/asio/src/doc/requirements/SyncRandomAccessWriteDevice.qbk +0 -49
  922. data/ext/third_party/asio/asio/src/doc/requirements/SyncReadStream.qbk +0 -41
  923. data/ext/third_party/asio/asio/src/doc/requirements/SyncWriteStream.qbk +0 -39
  924. data/ext/third_party/asio/asio/src/doc/requirements/TimeTraits.qbk +0 -72
  925. data/ext/third_party/asio/asio/src/doc/requirements/WaitHandler.qbk +0 -72
  926. data/ext/third_party/asio/asio/src/doc/requirements/WaitTraits.qbk +0 -52
  927. data/ext/third_party/asio/asio/src/doc/requirements/WriteHandler.qbk +0 -79
  928. data/ext/third_party/asio/asio/src/doc/requirements/asynchronous_operations.qbk +0 -300
  929. data/ext/third_party/asio/asio/src/doc/requirements/asynchronous_socket_operations.qbk +0 -39
  930. data/ext/third_party/asio/asio/src/doc/requirements/read_write_operations.qbk +0 -34
  931. data/ext/third_party/asio/asio/src/doc/requirements/synchronous_socket_operations.qbk +0 -37
  932. data/ext/third_party/asio/asio/src/doc/std_exception_dox.txt +0 -7
  933. data/ext/third_party/asio/asio/src/doc/tutorial.dox +0 -226
  934. data/ext/third_party/asio/asio/src/doc/tutorial.qbk +0 -2387
  935. data/ext/third_party/asio/asio/src/doc/tutorial.xsl +0 -437
  936. data/ext/third_party/asio/asio/src/doc/using.qbk +0 -309
  937. data/ext/third_party/asio/asio/tsify.pl +0 -574
  938. data/ext/third_party/gsl/.clang-format +0 -34
  939. data/ext/third_party/gsl/.github/workflows/main.yml +0 -94
  940. data/ext/third_party/gsl/.gitignore +0 -16
  941. data/ext/third_party/gsl/.travis.yml +0 -551
  942. data/ext/third_party/gsl/CMakeSettings.json +0 -18
  943. data/ext/third_party/gsl/CONTRIBUTING.md +0 -29
  944. data/ext/third_party/gsl/GSL.natvis +0 -98
  945. data/ext/third_party/gsl/README.md +0 -124
  946. data/ext/third_party/gsl/appveyor.yml +0 -128
  947. data/ext/third_party/http_parser/.gitignore +0 -30
  948. data/ext/third_party/http_parser/.mailmap +0 -8
  949. data/ext/third_party/http_parser/.travis.yml +0 -13
  950. data/ext/third_party/http_parser/AUTHORS +0 -68
  951. data/ext/third_party/http_parser/Makefile +0 -160
  952. data/ext/third_party/http_parser/README.md +0 -246
  953. data/ext/third_party/http_parser/bench.c +0 -128
  954. data/ext/third_party/http_parser/http_parser.gyp +0 -111
  955. data/ext/third_party/http_parser/test.c +0 -4600
  956. data/ext/third_party/json/.appveyor.yml +0 -44
  957. data/ext/third_party/json/.clang-format +0 -84
  958. data/ext/third_party/json/.conan/build.py +0 -80
  959. data/ext/third_party/json/.conan/test_package/CMakeLists.txt +0 -12
  960. data/ext/third_party/json/.conan/test_package/conanfile.py +0 -24
  961. data/ext/third_party/json/.conan/test_package/test_package.cpp +0 -16
  962. data/ext/third_party/json/.gitignore +0 -3
  963. data/ext/third_party/json/.travis.yml +0 -173
  964. data/ext/third_party/json/Makefile +0 -77
  965. data/ext/third_party/json/README.md +0 -149
  966. data/ext/third_party/json/conanfile.py +0 -28
  967. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/analyze_cycles.hpp +0 -127
  968. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/counted.hpp +0 -23
  969. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/generic.hpp +0 -31
  970. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/grammar_info.hpp +0 -32
  971. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/insert_guard.hpp +0 -51
  972. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/insert_rules.hpp +0 -25
  973. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/rule_info.hpp +0 -29
  974. data/ext/third_party/json/include/tao/json/external/pegtl/analysis/rule_type.hpp +0 -21
  975. data/ext/third_party/json/include/tao/json/external/pegtl/analyze.hpp +0 -21
  976. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/counter.hpp +0 -54
  977. data/ext/third_party/json/include/tao/json/external/pegtl/contrib/tracer.hpp +0 -158
  978. data/ext/third_party/json/include/tao/json/external/pegtl/internal/alnum.hpp +0 -18
  979. data/ext/third_party/json/include/tao/json/external/pegtl/internal/alpha.hpp +0 -18
  980. data/ext/third_party/json/include/tao/json/external/pegtl/internal/dusel_mode.hpp +0 -23
  981. data/ext/third_party/json/include/tao/json/external/pegtl/internal/duseltronik.hpp +0 -187
  982. data/ext/third_party/json/include/tao/json/external/pegtl/internal/file_opener.hpp +0 -72
  983. data/ext/third_party/json/include/tao/json/external/pegtl/internal/trivial.hpp +0 -32
  984. data/ext/third_party/snappy/.appveyor.yml +0 -36
  985. data/ext/third_party/snappy/.gitignore +0 -8
  986. data/ext/third_party/snappy/.travis.yml +0 -98
  987. data/ext/third_party/snappy/AUTHORS +0 -1
  988. data/ext/third_party/snappy/CONTRIBUTING.md +0 -26
  989. data/ext/third_party/snappy/NEWS +0 -188
  990. data/ext/third_party/snappy/README.md +0 -148
  991. data/ext/third_party/snappy/docs/README.md +0 -72
  992. data/ext/third_party/snappy/format_description.txt +0 -110
  993. data/ext/third_party/snappy/framing_format.txt +0 -135
  994. data/ext/third_party/snappy/snappy-test.cc +0 -613
  995. data/ext/third_party/snappy/snappy-test.h +0 -526
  996. data/ext/third_party/snappy/snappy_compress_fuzzer.cc +0 -60
  997. data/ext/third_party/snappy/snappy_uncompress_fuzzer.cc +0 -58
  998. data/ext/third_party/snappy/snappy_unittest.cc +0 -1512
  999. data/ext/third_party/spdlog/.clang-format +0 -108
  1000. data/ext/third_party/spdlog/.clang-tidy +0 -54
  1001. data/ext/third_party/spdlog/.gitattributes +0 -1
  1002. data/ext/third_party/spdlog/.gitignore +0 -83
  1003. data/ext/third_party/spdlog/.travis.yml +0 -112
  1004. data/ext/third_party/spdlog/INSTALL +0 -24
  1005. data/ext/third_party/spdlog/README.md +0 -423
  1006. data/ext/third_party/spdlog/appveyor.yml +0 -51
  1007. data/ext/third_party/spdlog/include/spdlog/cfg/log_levels.h +0 -47
@@ -1,4 +1,4 @@
1
- # Copyright 2020 Couchbase, Inc.
1
+ # Copyright 2020-2021 Couchbase, Inc.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -32,7 +32,7 @@ module Couchbase
32
32
  # development document or a production document. The type of this argument is [Symbol] with allowed values
33
33
  # +:production+ and +:development+.
34
34
  class ViewIndexManager
35
- alias_method :inspect, :to_s
35
+ alias inspect to_s
36
36
 
37
37
  # @return [String] name of the bucket
38
38
  attr_accessor :bucket_name
@@ -80,8 +80,14 @@ module Couchbase
80
80
  # @return [void]
81
81
  def upsert_design_document(document, namespace, options = UpsertDesignDocumentOptions.new)
82
82
  @backend.view_index_upsert(@bucket_name, {
83
- name: document.name,
84
- views: document.views.map { |name, view| {name: name, map: view.map_function, reduce: view.reduce_function} }
83
+ name: document.name,
84
+ views: document.views.map do |name, view|
85
+ {
86
+ name: name,
87
+ map: view.map_function,
88
+ reduce: view.reduce_function,
89
+ }
90
+ end,
85
91
  }, namespace, options.timeout)
86
92
  end
87
93
 
@@ -184,11 +190,11 @@ module Couchbase
184
190
 
185
191
  # @return [String] map function in javascript as String
186
192
  attr_accessor :map_function
187
- alias_method :map, :map_function
193
+ alias map map_function
188
194
 
189
195
  # @return [String] reduce function in javascript as String
190
196
  attr_accessor :reduce_function
191
- alias_method :reduce, :reduce_function
197
+ alias reduce reduce_function
192
198
 
193
199
  # @return [Boolean] true if map function is defined
194
200
  def has_map?
@@ -1,4 +1,4 @@
1
- # Copyright 2020 Couchbase, Inc.
1
+ # Copyright 2020-2021 Couchbase, Inc.
2
2
  #
3
3
  # Licensed under the Apache License, Version 2.0 (the "License");
4
4
  # you may not use this file except in compliance with the License.
@@ -47,5 +47,17 @@ module Couchbase
47
47
  def add(*mutation_tokens)
48
48
  @tokens |= mutation_tokens
49
49
  end
50
+
51
+ # @api private
52
+ def to_a
53
+ @tokens.map do |t|
54
+ {
55
+ bucket_name: t.bucket_name,
56
+ partition_id: t.partition_id,
57
+ partition_uuid: t.partition_uuid,
58
+ sequence_number: t.sequence_number,
59
+ }
60
+ end
61
+ end
50
62
  end
51
63
  end
@@ -0,0 +1,2113 @@
1
+ # Copyright 2020-2021 Couchbase, Inc.
2
+ #
3
+ # Licensed under the Apache License, Version 2.0 (the "License");
4
+ # you may not use this file except in compliance with the License.
5
+ # You may obtain a copy of the License at
6
+ #
7
+ # http://www.apache.org/licenses/LICENSE-2.0
8
+ #
9
+ # Unless required by applicable law or agreed to in writing, software
10
+ # distributed under the License is distributed on an "AS IS" BASIS,
11
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
+ # See the License for the specific language governing permissions and
13
+ # limitations under the License.
14
+
15
+ require "couchbase/utils/time"
16
+
17
+ module Couchbase
18
+ # Definition of the Option classes for data APIs
19
+ module Options # rubocop:disable Metrics/ModuleLength
20
+ # Base class for most of the options
21
+ class Base
22
+ attr_accessor :timeout # @return [Integer, #in_milliseconds, nil]
23
+ attr_accessor :retry_strategy # @return [Proc, nil]
24
+ attr_accessor :client_context # @return [Hash, nil]
25
+ attr_accessor :parent_span # @return [Span, nil]
26
+
27
+ # @param [Integer, #in_milliseconds, nil] timeout the time in milliseconds allowed for the operation to complete
28
+ # @param [Proc, nil] retry_strategy the custom retry strategy, if set
29
+ # @param [Hash, nil] client_context the client context data, if set
30
+ # @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
31
+ #
32
+ # @yieldparam [Base]
33
+ def initialize(timeout: nil,
34
+ retry_strategy: nil,
35
+ client_context: nil,
36
+ parent_span: nil)
37
+ @timeout = timeout
38
+ @retry_strategy = retry_strategy
39
+ @client_context = client_context
40
+ @parent_span = parent_span
41
+ yield self if block_given?
42
+ end
43
+ end
44
+
45
+ # Options for {Collection#get}
46
+ class Get < Base
47
+ attr_accessor :with_expiry # @return [Boolean]
48
+ attr_accessor :transcoder # @return [JsonTranscoder, #decode(String, Integer)]
49
+
50
+ # Creates an instance of options for {Collection#get}
51
+ #
52
+ # @param [Array<String>] projections a list of paths that should be loaded if present.
53
+ # @param [Boolean] with_expiry if +true+ the expiration will be also fetched with {Collection#get}
54
+ # @param [JsonTranscoder, #decode(String, Integer)] transcoder used for decoding
55
+ #
56
+ # @param [Integer, #in_milliseconds, nil] timeout the time in milliseconds allowed for the operation to complete
57
+ # @param [Proc, nil] retry_strategy the custom retry strategy, if set
58
+ # @param [Hash, nil] client_context the client context data, if set
59
+ # @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
60
+ #
61
+ # @yieldparam [Get] self
62
+ def initialize(projections: [],
63
+ with_expiry: false,
64
+ transcoder: JsonTranscoder.new,
65
+ timeout: nil,
66
+ retry_strategy: nil,
67
+ client_context: nil,
68
+ parent_span: nil)
69
+ super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
70
+ @projections = projections
71
+ @with_expiry = with_expiry
72
+ @transcoder = transcoder
73
+ @preserve_array_indexes = false
74
+ yield self if block_given?
75
+ end
76
+
77
+ # Allows to specify a custom list paths to fetch from the document instead of the whole.
78
+ #
79
+ # Note that a maximum of 16 individual paths can be projected at a time due to a server limitation. If you need
80
+ # more than that, think about fetching less-generic paths or the full document straight away.
81
+ #
82
+ # @param [String, Array<String>] paths a path that should be loaded if present.
83
+ def project(*paths)
84
+ @projections ||= []
85
+ @projections |= paths.flatten # union with current projections
86
+ end
87
+
88
+ # @api private
89
+ # @return [Boolean] whether to use sparse arrays (default +false+)
90
+ attr_accessor :preserve_array_indexes
91
+
92
+ # @api private
93
+ # @return [Array<String>] list of paths to project
94
+ attr_accessor :projections
95
+
96
+ # @api private
97
+ # @return [Boolean]
98
+ def need_projected_get?
99
+ @with_expiry || !@projections&.empty?
100
+ end
101
+
102
+ # @api private
103
+ def to_backend
104
+ options = {
105
+ timeout: @timeout.respond_to?(:in_milliseconds) ? @timeout.public_send(:in_milliseconds) : @timeout,
106
+ }
107
+ options.update(with_expiry: true) if @with_expiry
108
+ unless @projections&.empty?
109
+ options.update({
110
+ projections: @projections,
111
+ preserve_array_indexes: @preserve_array_indexes,
112
+ })
113
+ end
114
+ options
115
+ end
116
+ end
117
+
118
+ # Options for {Collection#get_multi}
119
+ class GetMulti < Base
120
+ attr_accessor :transcoder # @return [JsonTranscoder, #decode(String, Integer)]
121
+
122
+ # Creates an instance of options for {Collection#get_multi}
123
+ #
124
+ # @param [JsonTranscoder, #decode(String, Integer)] transcoder used for decoding
125
+ #
126
+ # @param [Integer, #in_milliseconds, nil] timeout the time in milliseconds allowed for the operation to complete
127
+ # @param [Proc, nil] retry_strategy the custom retry strategy, if set
128
+ # @param [Hash, nil] client_context the client context data, if set
129
+ # @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
130
+ #
131
+ # @yieldparam [Get] self
132
+ def initialize(transcoder: JsonTranscoder.new,
133
+ timeout: nil,
134
+ retry_strategy: nil,
135
+ client_context: nil,
136
+ parent_span: nil)
137
+ super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
138
+ @transcoder = transcoder
139
+ yield self if block_given?
140
+ end
141
+
142
+ # @api private
143
+ def to_backend
144
+ {
145
+ timeout: @timeout.respond_to?(:in_milliseconds) ? @timeout.public_send(:in_milliseconds) : @timeout,
146
+ }
147
+ end
148
+ end
149
+
150
+ # Options for {Collection#get_and_lock}
151
+ class GetAndLock < Base
152
+ attr_accessor :transcoder # @return [JsonTranscoder, #decode(String, Integer)]
153
+
154
+ # Creates an instance of options for {Collection#get_and_lock}
155
+ #
156
+ # @param [JsonTranscoder, #decode(String, Integer)] transcoder used for decoding
157
+ #
158
+ # @param [Integer, #in_milliseconds, nil] timeout
159
+ # @param [Proc, nil] retry_strategy the custom retry strategy, if set
160
+ # @param [Hash, nil] client_context the client context data, if set
161
+ # @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
162
+ #
163
+ # @yieldparam [GetAndLock] self
164
+ def initialize(transcoder: JsonTranscoder.new,
165
+ timeout: nil,
166
+ retry_strategy: nil,
167
+ client_context: nil,
168
+ parent_span: nil)
169
+ super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
170
+ @transcoder = transcoder
171
+ yield self if block_given?
172
+ end
173
+
174
+ # @api private
175
+ def to_backend
176
+ {
177
+ timeout: @timeout.respond_to?(:in_milliseconds) ? @timeout.public_send(:in_milliseconds) : @timeout,
178
+ }
179
+ end
180
+ end
181
+
182
+ # Options for {Collection#get_and_touch}
183
+ class GetAndTouch < Base
184
+ attr_accessor :transcoder # @return [JsonTranscoder, #decode(String, Integer)]
185
+
186
+ # Creates an instance of options for {Collection#get_and_touch}
187
+ #
188
+ # @param [JsonTranscoder, #decode(String, Integer)] transcoder used for decoding
189
+ #
190
+ # @param [Integer, #in_milliseconds, nil] timeout
191
+ # @param [Proc, nil] retry_strategy the custom retry strategy, if set
192
+ # @param [Hash, nil] client_context the client context data, if set
193
+ # @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
194
+ #
195
+ # @yieldparam [GetAndTouch] self
196
+ def initialize(transcoder: JsonTranscoder.new,
197
+ timeout: nil,
198
+ retry_strategy: nil,
199
+ client_context: nil,
200
+ parent_span: nil)
201
+ super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
202
+ @transcoder = transcoder
203
+ yield self if block_given?
204
+ end
205
+
206
+ # @api private
207
+ def to_backend
208
+ {
209
+ timeout: @timeout.respond_to?(:in_milliseconds) ? @timeout.public_send(:in_milliseconds) : @timeout,
210
+ }
211
+ end
212
+ end
213
+
214
+ # Options for {Collection#get_all_replicas}
215
+ class GetAllReplicas < Base
216
+ attr_accessor :transcoder # @return [JsonTranscoder, #decode(String, Integer)]
217
+
218
+ # Creates an instance of options for {Collection#get_all_replicas}
219
+ #
220
+ # @param [JsonTranscoder, #decode(String, Integer)] transcoder used for decoding
221
+ #
222
+ # @param [Integer, #in_milliseconds, nil] timeout
223
+ # @param [Proc, nil] retry_strategy the custom retry strategy, if set
224
+ # @param [Hash, nil] client_context the client context data, if set
225
+ # @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
226
+ #
227
+ # @yieldparam [GetAllReplicas] self
228
+ def initialize(transcoder: JsonTranscoder.new,
229
+ timeout: nil,
230
+ retry_strategy: nil,
231
+ client_context: nil,
232
+ parent_span: nil)
233
+ super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
234
+ @transcoder = transcoder
235
+ yield self if block_given?
236
+ end
237
+
238
+ # @api private
239
+ def to_backend
240
+ {
241
+ timeout: @timeout.respond_to?(:in_milliseconds) ? @timeout.public_send(:in_milliseconds) : @timeout,
242
+ }
243
+ end
244
+ end
245
+
246
+ # Options for {Collection#get_any_replica}
247
+ class GetAnyReplica < Base
248
+ attr_accessor :transcoder # @return [JsonTranscoder, #decode(String, Integer)]
249
+
250
+ # Creates an instance of options for {Collection#get_any_replica}
251
+ #
252
+ # @param [JsonTranscoder, #decode(String, Integer)] transcoder used for decoding
253
+ #
254
+ # @param [Integer, #in_milliseconds, nil] timeout
255
+ # @param [Proc, nil] retry_strategy the custom retry strategy, if set
256
+ # @param [Hash, nil] client_context the client context data, if set
257
+ # @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
258
+ #
259
+ # @yieldparam [GetAnyReplica] self
260
+ def initialize(transcoder: JsonTranscoder.new,
261
+ timeout: nil,
262
+ retry_strategy: nil,
263
+ client_context: nil,
264
+ parent_span: nil)
265
+ super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
266
+ @transcoder = transcoder
267
+ yield self if block_given?
268
+ end
269
+
270
+ # @api private
271
+ def to_backend
272
+ {
273
+ timeout: @timeout.respond_to?(:in_milliseconds) ? @timeout.public_send(:in_milliseconds) : @timeout,
274
+ }
275
+ end
276
+ end
277
+
278
+ # Options for {Collection#exists}
279
+ class Exists < Base
280
+ # Creates an instance of options for {Collection#exists}
281
+ #
282
+ # @param [Integer, #in_milliseconds, nil] timeout
283
+ # @param [Proc, nil] retry_strategy the custom retry strategy, if set
284
+ # @param [Hash, nil] client_context the client context data, if set
285
+ # @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
286
+ #
287
+ # @yieldparam [Exists self
288
+ def initialize(timeout: nil,
289
+ retry_strategy: nil,
290
+ client_context: nil,
291
+ parent_span: nil)
292
+ super
293
+ yield self if block_given?
294
+ end
295
+
296
+ # @api private
297
+ def to_backend
298
+ {
299
+ timeout: @timeout.respond_to?(:in_milliseconds) ? @timeout.public_send(:in_milliseconds) : @timeout,
300
+ }
301
+ end
302
+ end
303
+
304
+ # Options for {Collection#touch}
305
+ class Touch < Base
306
+ # Creates an instance of options for {Collection#touch}
307
+ #
308
+ # @param [Integer, #in_milliseconds, nil] timeout
309
+ # @param [Proc, nil] retry_strategy the custom retry strategy, if set
310
+ # @param [Hash, nil] client_context the client context data, if set
311
+ # @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
312
+ #
313
+ # @yieldparam [TouchOptions] self
314
+ def initialize(timeout: nil,
315
+ retry_strategy: nil,
316
+ client_context: nil,
317
+ parent_span: nil)
318
+ super
319
+ yield self if block_given?
320
+ end
321
+
322
+ # @api private
323
+ def to_backend
324
+ {
325
+ timeout: @timeout.respond_to?(:in_milliseconds) ? @timeout.public_send(:in_milliseconds) : @timeout,
326
+ }
327
+ end
328
+ end
329
+
330
+ # Options for {Collection#unlock}
331
+ class Unlock < Base
332
+ # Creates an instance of options for {Collection#unlock}
333
+ #
334
+ # @param [Integer, #in_milliseconds, nil] timeout
335
+ # @param [Proc, nil] retry_strategy the custom retry strategy, if set
336
+ # @param [Hash, nil] client_context the client context data, if set
337
+ # @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
338
+ #
339
+ # @yieldparam [Unlock] self
340
+ def initialize(timeout: nil,
341
+ retry_strategy: nil,
342
+ client_context: nil,
343
+ parent_span: nil)
344
+ super
345
+ yield self if block_given?
346
+ end
347
+
348
+ # @api private
349
+ def to_backend
350
+ {
351
+ timeout: @timeout.respond_to?(:in_milliseconds) ? @timeout.public_send(:in_milliseconds) : @timeout,
352
+ }
353
+ end
354
+ end
355
+
356
+ # Options for {Collection#remove}
357
+ class Remove < Base
358
+ attr_accessor :cas # @return [Integer, nil]
359
+ attr_accessor :durability_level # @return [Symbol]
360
+
361
+ # Creates an instance of options for {Collection#remove}
362
+ #
363
+ # @param [Integer, nil] cas CAS value for optimistic locking
364
+ # @param [Symbol] durability_level level of durability
365
+ # +:none+::
366
+ # no enhanced durability required for the mutation
367
+ # +:majority+::
368
+ # the mutation must be replicated to a majority of the Data Service nodes
369
+ # (that is, held in the memory allocated to the bucket)
370
+ # +:majority_and_persist_to_active+::
371
+ # The mutation must be replicated to a majority of the Data Service nodes.
372
+ # Additionally, it must be persisted (that is, written and synchronised to disk) on the
373
+ # node hosting the active partition (vBucket) for the data.
374
+ # +:persist_to_majority+::
375
+ # The mutation must be persisted to a majority of the Data Service nodes.
376
+ # Accordingly, it will be written to disk on those nodes.
377
+ #
378
+ # @param [Integer, #in_milliseconds, nil] timeout
379
+ # @param [Proc, nil] retry_strategy the custom retry strategy, if set
380
+ # @param [Hash, nil] client_context the client context data, if set
381
+ # @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
382
+ #
383
+ # @yieldparam [Remove]
384
+ def initialize(cas: nil,
385
+ durability_level: :none,
386
+ timeout: nil,
387
+ retry_strategy: nil,
388
+ client_context: nil,
389
+ parent_span: nil)
390
+ super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
391
+ @cas = cas
392
+ @durability_level = durability_level
393
+ yield self if block_given?
394
+ end
395
+
396
+ # @api private
397
+ def to_backend
398
+ {
399
+ timeout: @timeout.respond_to?(:in_milliseconds) ? @timeout.public_send(:in_milliseconds) : @timeout,
400
+ durability_level: @durability_level,
401
+ cas: @cas,
402
+ }
403
+ end
404
+ end
405
+
406
+ # Options for {Collection#remove_multi}
407
+ class RemoveMulti < Base
408
+ attr_accessor :durability_level # @return [Symbol]
409
+
410
+ # Creates an instance of options for {Collection#remove}
411
+ #
412
+ # @param [Symbol] durability_level level of durability
413
+ # +:none+::
414
+ # no enhanced durability required for the mutation
415
+ # +:majority+::
416
+ # the mutation must be replicated to a majority of the Data Service nodes
417
+ # (that is, held in the memory allocated to the bucket)
418
+ # +:majority_and_persist_to_active+::
419
+ # The mutation must be replicated to a majority of the Data Service nodes.
420
+ # Additionally, it must be persisted (that is, written and synchronised to disk) on the
421
+ # node hosting the active partition (vBucket) for the data.
422
+ # +:persist_to_majority+::
423
+ # The mutation must be persisted to a majority of the Data Service nodes.
424
+ # Accordingly, it will be written to disk on those nodes.
425
+ #
426
+ # @param [Integer, #in_milliseconds, nil] timeout
427
+ # @param [Proc, nil] retry_strategy the custom retry strategy, if set
428
+ # @param [Hash, nil] client_context the client context data, if set
429
+ # @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
430
+ #
431
+ # @yieldparam [Remove]
432
+ def initialize(durability_level: :none,
433
+ timeout: nil,
434
+ retry_strategy: nil,
435
+ client_context: nil,
436
+ parent_span: nil)
437
+ super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
438
+ @durability_level = durability_level
439
+ yield self if block_given?
440
+ end
441
+
442
+ # @api private
443
+ def to_backend
444
+ {
445
+ timeout: @timeout.respond_to?(:in_milliseconds) ? @timeout.public_send(:in_milliseconds) : @timeout,
446
+ durability_level: @durability_level,
447
+ }
448
+ end
449
+ end
450
+
451
+ # Options for {Collection#insert}
452
+ class Insert < Base
453
+ attr_accessor :expiry # @return [Integer, #in_seconds, nil]
454
+ attr_accessor :transcoder # @return [JsonTranscoder, #encode(Object)]
455
+ attr_accessor :durability_level # @return [Symbol]
456
+
457
+ # Creates an instance of options for {Collection#insert}
458
+ #
459
+ # @param [Integer, #in_seconds, Time, nil] expiry expiration time to associate with the document
460
+ # @param [JsonTranscoder, #encode(Object)] transcoder used for encoding
461
+ # @param [Symbol] durability_level level of durability
462
+ # +:none+::
463
+ # no enhanced durability required for the mutation
464
+ # +:majority+::
465
+ # the mutation must be replicated to a majority of the Data Service nodes
466
+ # (that is, held in the memory allocated to the bucket)
467
+ # +:majority_and_persist_to_active+::
468
+ # The mutation must be replicated to a majority of the Data Service nodes.
469
+ # Additionally, it must be persisted (that is, written and synchronised to disk) on the
470
+ # node hosting the active partition (vBucket) for the data.
471
+ # +:persist_to_majority+::
472
+ # The mutation must be persisted to a majority of the Data Service nodes.
473
+ # Accordingly, it will be written to disk on those nodes.
474
+ #
475
+ # @param [Integer, #in_milliseconds, nil] timeout
476
+ # @param [Proc, nil] retry_strategy the custom retry strategy, if set
477
+ # @param [Hash, nil] client_context the client context data, if set
478
+ # @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
479
+ #
480
+ # @yieldparam [Insert]
481
+ def initialize(expiry: nil,
482
+ transcoder: JsonTranscoder.new,
483
+ durability_level: :none,
484
+ timeout: nil,
485
+ retry_strategy: nil,
486
+ client_context: nil,
487
+ parent_span: nil)
488
+ super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
489
+ @expiry = Utils::Time.extract_expiry_time(expiry)
490
+ @transcoder = transcoder
491
+ @durability_level = durability_level
492
+ yield self if block_given?
493
+ end
494
+
495
+ # @api private
496
+ def to_backend
497
+ {
498
+ timeout: @timeout.respond_to?(:in_milliseconds) ? @timeout.public_send(:in_milliseconds) : @timeout,
499
+ expiry: @expiry,
500
+ durability_level: @durability_level,
501
+ }
502
+ end
503
+ end
504
+
505
+ # Options for {Collection#upsert}
506
+ class Upsert < Base
507
+ attr_accessor :expiry # @return [Integer, #in_seconds, nil]
508
+ attr_accessor :transcoder # @return [JsonTranscoder, #encode(Object)]
509
+ attr_accessor :durability_level # @return [Symbol]
510
+
511
+ # Creates an instance of options for {Collection#upsert}
512
+ #
513
+ # @param [Integer, #in_seconds, Time, nil] expiry expiration time to associate with the document
514
+ # @param [JsonTranscoder, #encode(Object)] transcoder used for encoding
515
+ # @param [Symbol] durability_level level of durability
516
+ # +:none+::
517
+ # no enhanced durability required for the mutation
518
+ # +:majority+::
519
+ # the mutation must be replicated to a majority of the Data Service nodes
520
+ # (that is, held in the memory allocated to the bucket)
521
+ # +:majority_and_persist_to_active+::
522
+ # The mutation must be replicated to a majority of the Data Service nodes.
523
+ # Additionally, it must be persisted (that is, written and synchronised to disk) on the
524
+ # node hosting the active partition (vBucket) for the data.
525
+ # +:persist_to_majority+::
526
+ # The mutation must be persisted to a majority of the Data Service nodes.
527
+ # Accordingly, it will be written to disk on those nodes.
528
+ #
529
+ # @param [Integer, #in_milliseconds, nil] timeout
530
+ # @param [Proc, nil] retry_strategy the custom retry strategy, if set
531
+ # @param [Hash, nil] client_context the client context data, if set
532
+ # @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
533
+ #
534
+ # @yieldparam [Upsert]
535
+ def initialize(expiry: nil,
536
+ transcoder: JsonTranscoder.new,
537
+ durability_level: :none,
538
+ timeout: nil,
539
+ retry_strategy: nil,
540
+ client_context: nil,
541
+ parent_span: nil)
542
+ super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
543
+ @expiry = Utils::Time.extract_expiry_time(expiry)
544
+ @transcoder = transcoder
545
+ @durability_level = durability_level
546
+ yield self if block_given?
547
+ end
548
+
549
+ def to_backend
550
+ {
551
+ timeout: @timeout.respond_to?(:in_milliseconds) ? @timeout.public_send(:in_milliseconds) : @timeout,
552
+ expiry: @expiry,
553
+ durability_level: @durability_level,
554
+ }
555
+ end
556
+ end
557
+
558
+ # Options for {Collection#upsert_multi}
559
+ class UpsertMulti < Base
560
+ attr_accessor :expiry # @return [Integer, #in_seconds, nil]
561
+ attr_accessor :transcoder # @return [JsonTranscoder, #encode(Object)]
562
+ attr_accessor :durability_level # @return [Symbol]
563
+
564
+ # Creates an instance of options for {Collection#upsert}
565
+ #
566
+ # @param [Integer, #in_seconds, Time, nil] expiry expiration time to associate with the document
567
+ # @param [JsonTranscoder, #encode(Object)] transcoder used for encoding
568
+ # @param [Symbol] durability_level level of durability
569
+ # +:none+::
570
+ # no enhanced durability required for the mutation
571
+ # +:majority+::
572
+ # the mutation must be replicated to a majority of the Data Service nodes
573
+ # (that is, held in the memory allocated to the bucket)
574
+ # +:majority_and_persist_to_active+::
575
+ # The mutation must be replicated to a majority of the Data Service nodes.
576
+ # Additionally, it must be persisted (that is, written and synchronised to disk) on the
577
+ # node hosting the active partition (vBucket) for the data.
578
+ # +:persist_to_majority+::
579
+ # The mutation must be persisted to a majority of the Data Service nodes.
580
+ # Accordingly, it will be written to disk on those nodes.
581
+ #
582
+ # @param [Integer, #in_milliseconds, nil] timeout
583
+ # @param [Proc, nil] retry_strategy the custom retry strategy, if set
584
+ # @param [Hash, nil] client_context the client context data, if set
585
+ # @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
586
+ #
587
+ # @yieldparam [Upsert]
588
+ def initialize(expiry: nil,
589
+ transcoder: JsonTranscoder.new,
590
+ durability_level: :none,
591
+ timeout: nil,
592
+ retry_strategy: nil,
593
+ client_context: nil,
594
+ parent_span: nil)
595
+ super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
596
+ @expiry = Utils::Time.extract_expiry_time(expiry)
597
+ @transcoder = transcoder
598
+ @durability_level = durability_level
599
+ yield self if block_given?
600
+ end
601
+
602
+ def to_backend
603
+ {
604
+ timeout: @timeout.respond_to?(:in_milliseconds) ? @timeout.public_send(:in_milliseconds) : @timeout,
605
+ expiry: @expiry,
606
+ durability_level: @durability_level,
607
+ }
608
+ end
609
+ end
610
+
611
+ # Options for {Collection#replace}
612
+ class Replace < Base
613
+ attr_accessor :expiry # @return [Integer, #in_seconds, nil]
614
+ attr_accessor :transcoder # @return [JsonTranscoder, #encode(Object)]
615
+ attr_accessor :cas # @return [Integer, nil]
616
+ attr_accessor :durability_level # @return [Symbol]
617
+
618
+ # Creates an instance of options for {Collection#replace}
619
+ #
620
+ # @param [Integer, #in_seconds, nil] expiry expiration time to associate with the document
621
+ # @param [JsonTranscoder, #encode(Object)] transcoder used for encoding
622
+ # @param [Integer, nil] cas a CAS value that will be taken into account on the server side for optimistic concurrency
623
+ # @param [Symbol] durability_level level of durability
624
+ # +:none+::
625
+ # no enhanced durability required for the mutation
626
+ # +:majority+::
627
+ # the mutation must be replicated to a majority of the Data Service nodes
628
+ # (that is, held in the memory allocated to the bucket)
629
+ # +:majority_and_persist_to_active+::
630
+ # The mutation must be replicated to a majority of the Data Service nodes.
631
+ # Additionally, it must be persisted (that is, written and synchronised to disk) on the
632
+ # node hosting the active partition (vBucket) for the data.
633
+ # +:persist_to_majority+::
634
+ # The mutation must be persisted to a majority of the Data Service nodes.
635
+ # Accordingly, it will be written to disk on those nodes.
636
+ #
637
+ # @param [Integer, #in_milliseconds, nil] timeout
638
+ # @param [Proc, nil] retry_strategy the custom retry strategy, if set
639
+ # @param [Hash, nil] client_context the client context data, if set
640
+ # @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
641
+ #
642
+ # @yieldparam [Replace]
643
+ def initialize(expiry: nil,
644
+ transcoder: JsonTranscoder.new,
645
+ cas: nil,
646
+ durability_level: :none,
647
+ timeout: nil,
648
+ retry_strategy: nil,
649
+ client_context: nil,
650
+ parent_span: nil)
651
+ super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
652
+ @expiry = Utils::Time.extract_expiry_time(expiry)
653
+ @transcoder = transcoder
654
+ @cas = cas
655
+ @durability_level = durability_level
656
+ yield self if block_given?
657
+ end
658
+
659
+ def to_backend
660
+ {
661
+ timeout: @timeout.respond_to?(:in_milliseconds) ? @timeout.public_send(:in_milliseconds) : @timeout,
662
+ expiry: @expiry,
663
+ durability_level: @durability_level,
664
+ cas: @cas,
665
+ }
666
+ end
667
+ end
668
+
669
+ # Options for {Collection#mutate_in}
670
+ class MutateIn < Base
671
+ attr_accessor :expiry # @return [Integer, #in_seconds, nil]
672
+ attr_accessor :store_semantics # @return [Symbol]
673
+ attr_accessor :cas # @return [Integer, nil]
674
+ attr_accessor :durability_level # @return [Symbol]
675
+ attr_accessor :transcoder # @return [JsonTranscoder, #encode(Object)]
676
+
677
+ # Creates an instance of options for {Collection#mutate_in}
678
+ #
679
+ # @param [Integer, #in_seconds, Time, nil] expiry expiration time to associate with the document
680
+ # @param [Symbol] store_semantics describes how the outer document store semantics on subdoc should act
681
+ # +:replace+:: replace the document, fail if it does not exist. This is the default
682
+ # +:upsert+:: replace the document or create if it does not exist
683
+ # +:insert+:: create the document, fail if it exists
684
+ # @param [Integer, nil] cas a CAS value that will be taken into account on the server side for optimistic concurrency
685
+ # @param [Boolean] access_deleted for internal use only: allows access to deleted documents that are in "tombstone" form
686
+ # @param [Boolean] create_as_deleted for internal use only: allows creating documents in "tombstone" form
687
+ # @param [Symbol] durability_level level of durability
688
+ # +:none+::
689
+ # no enhanced durability required for the mutation
690
+ # +:majority+::
691
+ # the mutation must be replicated to a majority of the Data Service nodes
692
+ # (that is, held in the memory allocated to the bucket)
693
+ # +:majority_and_persist_to_active+::
694
+ # The mutation must be replicated to a majority of the Data Service nodes.
695
+ # Additionally, it must be persisted (that is, written and synchronised to disk) on the
696
+ # node hosting the active partition (vBucket) for the data.
697
+ # +:persist_to_majority+::
698
+ # The mutation must be persisted to a majority of the Data Service nodes.
699
+ # Accordingly, it will be written to disk on those nodes.
700
+ # @param [JsonTranscoder, #encode(Object)] transcoder used for encoding
701
+ #
702
+ # @param [Integer, #in_milliseconds, nil] timeout
703
+ # @param [Proc, nil] retry_strategy the custom retry strategy, if set
704
+ # @param [Hash, nil] client_context the client context data, if set
705
+ # @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
706
+ #
707
+ # @yieldparam [MutateIn]
708
+ def initialize(expiry: nil,
709
+ store_semantics: :replace,
710
+ cas: nil,
711
+ access_deleted: false,
712
+ create_as_deleted: false,
713
+ durability_level: :none,
714
+ transcoder: JsonTranscoder.new,
715
+ timeout: nil,
716
+ retry_strategy: nil,
717
+ client_context: nil,
718
+ parent_span: nil)
719
+ super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
720
+ @expiry = Utils::Time.extract_expiry_time(expiry)
721
+ @store_semantics = store_semantics
722
+ @cas = cas
723
+ @access_deleted = access_deleted
724
+ @create_as_deleted = create_as_deleted
725
+ @durability_level = durability_level
726
+ @transcoder = transcoder
727
+ yield self if block_given?
728
+ end
729
+
730
+ # @api private
731
+ def to_backend
732
+ {
733
+ timeout: @timeout.respond_to?(:in_milliseconds) ? @timeout.public_send(:in_milliseconds) : @timeout,
734
+ expiry: @expiry,
735
+ durability_level: @durability_level,
736
+ cas: @cas,
737
+ store_semantics: @store_semantics,
738
+ access_deleted: @access_deleted,
739
+ create_as_deleted: @create_as_deleted,
740
+ }
741
+ end
742
+
743
+ # @api private
744
+ # @return [Boolean]
745
+ attr_accessor :access_deleted
746
+
747
+ # @api private
748
+ # @return [Boolean]
749
+ attr_accessor :create_as_deleted
750
+ end
751
+
752
+ # Options for {Collection#lookup_in}
753
+ class LookupIn < Base
754
+ attr_accessor :transcoder # @return [JsonTranscoder, #decode(String)]
755
+
756
+ # Creates an instance of options for {Collection#lookup_in}
757
+ #
758
+ # @param [Boolean] access_deleted for internal use only: allows access to deleted documents that are in "tombstone" form
759
+ # @param [JsonTranscoder, #decode(String)] transcoder used for encoding
760
+ #
761
+ # @param [Integer, #in_milliseconds, nil] timeout
762
+ # @param [Proc, nil] retry_strategy the custom retry strategy, if set
763
+ # @param [Hash, nil] client_context the client context data, if set
764
+ # @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
765
+ #
766
+ # @yieldparam [LookupIn] self
767
+ def initialize(access_deleted: false,
768
+ transcoder: JsonTranscoder.new,
769
+ timeout: nil,
770
+ retry_strategy: nil,
771
+ client_context: nil,
772
+ parent_span: nil)
773
+ super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
774
+ @access_deleted = access_deleted
775
+ @transcoder = transcoder
776
+ yield self if block_given?
777
+ end
778
+
779
+ # @api private
780
+ def to_backend
781
+ {
782
+ timeout: @timeout.respond_to?(:in_milliseconds) ? @timeout.public_send(:in_milliseconds) : @timeout,
783
+ access_deleted: @access_deleted,
784
+ }
785
+ end
786
+
787
+ # @api private
788
+ # @return [Boolean]
789
+ attr_accessor :access_deleted
790
+ end
791
+
792
+ # Options for {BinaryCollection#append}
793
+ class Append < Base
794
+ attr_accessor :cas # @return [Integer]
795
+
796
+ # Creates an instance of options for {BinaryCollection#append}
797
+ #
798
+ # @param [Integer] cas The default CAS used (0 means no CAS in this context)
799
+ #
800
+ # @param [Integer, #in_milliseconds, nil] timeout
801
+ # @param [Proc, nil] retry_strategy the custom retry strategy, if set
802
+ # @param [Hash, nil] client_context the client context data, if set
803
+ # @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
804
+ #
805
+ # @yieldparam [Append] self
806
+ def initialize(cas: nil,
807
+ timeout: nil,
808
+ retry_strategy: nil,
809
+ client_context: nil,
810
+ parent_span: nil)
811
+ super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
812
+ @cas = cas
813
+ yield self if block_given?
814
+ end
815
+
816
+ # @api private
817
+ def to_backend
818
+ {
819
+ timeout: @timeout.respond_to?(:in_milliseconds) ? @timeout.public_send(:in_milliseconds) : @timeout,
820
+ cas: @cas,
821
+ }
822
+ end
823
+ end
824
+
825
+ # Options for {BinaryCollection#prepend}
826
+ class Prepend < Base
827
+ # @return [Integer] The default CAS used (0 means no CAS in this context)
828
+ attr_accessor :cas
829
+
830
+ # Creates an instance of options for {BinaryCollection#prepend}
831
+ #
832
+ # @param [Integer] cas The default CAS used (0 means no CAS in this context)
833
+ #
834
+ # @param [Integer, #in_milliseconds, nil] timeout
835
+ # @param [Proc, nil] retry_strategy the custom retry strategy, if set
836
+ # @param [Hash, nil] client_context the client context data, if set
837
+ # @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
838
+ #
839
+ # @yieldparam [Prepend] self
840
+ def initialize(cas: nil,
841
+ timeout: nil,
842
+ retry_strategy: nil,
843
+ client_context: nil,
844
+ parent_span: nil)
845
+ super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
846
+ @cas = cas
847
+ yield self if block_given?
848
+ end
849
+
850
+ # @api private
851
+ def to_backend
852
+ {
853
+ timeout: @timeout.respond_to?(:in_milliseconds) ? @timeout.public_send(:in_milliseconds) : @timeout,
854
+ cas: @cas,
855
+ }
856
+ end
857
+ end
858
+
859
+ # Options for {BinaryCollection#increment}
860
+ class Increment < Base
861
+ attr_reader :delta # @return [Integer]
862
+ attr_accessor :initial # @return [Integer]
863
+ attr_accessor :expiry # @return [Integer, #in_seconds]
864
+ attr_accessor :durability_level # @return [Symbol]
865
+
866
+ # Creates an instance of options for {BinaryCollection#increment}
867
+ #
868
+ # @param [Integer] delta the delta for the operation
869
+ # @param [Integer] initial if present, holds the initial value
870
+ # @param [Integer, #in_seconds, Time, nil] expiry if set, holds the expiration for the operation
871
+ # @param [Symbol] durability_level level of durability
872
+ # +:none+::
873
+ # no enhanced durability required for the mutation
874
+ # +:majority+::
875
+ # the mutation must be replicated to a majority of the Data Service nodes
876
+ # (that is, held in the memory allocated to the bucket)
877
+ # +:majority_and_persist_to_active+::
878
+ # The mutation must be replicated to a majority of the Data Service nodes.
879
+ # Additionally, it must be persisted (that is, written and synchronised to disk) on the
880
+ # node hosting the active partition (vBucket) for the data.
881
+ # +:persist_to_majority+::
882
+ # The mutation must be persisted to a majority of the Data Service nodes.
883
+ # Accordingly, it will be written to disk on those nodes.
884
+ #
885
+ # @param [Integer, #in_milliseconds, nil] timeout
886
+ # @param [Proc, nil] retry_strategy the custom retry strategy, if set
887
+ # @param [Hash, nil] client_context the client context data, if set
888
+ # @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
889
+ #
890
+ # @yieldparam [Increment] self
891
+ def initialize(delta: 1,
892
+ initial: nil,
893
+ expiry: nil,
894
+ durability_level: :none,
895
+ timeout: nil,
896
+ retry_strategy: nil,
897
+ client_context: nil,
898
+ parent_span: nil)
899
+ raise ArgumentError, "the delta cannot be less than 0" if delta.negative?
900
+
901
+ super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
902
+ @delta = delta
903
+ @initial = initial
904
+ @expiry = Utils::Time.extract_expiry_time(expiry)
905
+ @durability_level = durability_level
906
+ yield self if block_given?
907
+ end
908
+
909
+ # @param [Integer] value delta for the operation
910
+ def delta=(value)
911
+ raise ArgumentError, "the delta cannot be less than 0" if delta.negative?
912
+
913
+ @delta = value
914
+ end
915
+
916
+ # @api private
917
+ def to_backend
918
+ {
919
+ timeout: @timeout.respond_to?(:in_milliseconds) ? @timeout.public_send(:in_milliseconds) : @timeout,
920
+ delta: @delta,
921
+ initial_value: @initial,
922
+ expiry: @expiry,
923
+ durability_level: @durability_level,
924
+ }
925
+ end
926
+ end
927
+
928
+ # Options for {BinaryCollection#decrement}
929
+ class Decrement < Base
930
+ attr_reader :delta # @return [Integer]
931
+ attr_accessor :initial # @return [Integer]
932
+ attr_accessor :expiry # @return [Integer, #in_seconds]
933
+ attr_accessor :durability_level # @return [Symbol]
934
+
935
+ # Creates an instance of options for {BinaryCollection#decrement}
936
+ #
937
+ # @param [Integer] delta the delta for the operation
938
+ # @param [Integer] initial if present, holds the initial value
939
+ # @param [Integer, #in_seconds, Time, nil] expiry if set, holds the expiration for the operation
940
+ # @param [Symbol] durability_level level of durability
941
+ # +:none+::
942
+ # no enhanced durability required for the mutation
943
+ # +:majority+::
944
+ # the mutation must be replicated to a majority of the Data Service nodes
945
+ # (that is, held in the memory allocated to the bucket)
946
+ # +:majority_and_persist_to_active+::
947
+ # The mutation must be replicated to a majority of the Data Service nodes.
948
+ # Additionally, it must be persisted (that is, written and synchronised to disk) on the
949
+ # node hosting the active partition (vBucket) for the data.
950
+ # +:persist_to_majority+::
951
+ # The mutation must be persisted to a majority of the Data Service nodes.
952
+ # Accordingly, it will be written to disk on those nodes.
953
+ #
954
+ # @param [Integer, #in_milliseconds, nil] timeout
955
+ # @param [Proc, nil] retry_strategy the custom retry strategy, if set
956
+ # @param [Hash, nil] client_context the client context data, if set
957
+ # @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
958
+ #
959
+ # @yieldparam [Decrement] self
960
+ def initialize(delta: 1,
961
+ initial: nil,
962
+ expiry: nil,
963
+ durability_level: :none,
964
+ timeout: nil,
965
+ retry_strategy: nil,
966
+ client_context: nil,
967
+ parent_span: nil)
968
+ raise ArgumentError, "the delta cannot be less than 0" if delta.negative?
969
+
970
+ super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
971
+ @delta = delta
972
+ @initial = initial
973
+ @expiry = Utils::Time.extract_expiry_time(expiry)
974
+ @durability_level = durability_level
975
+ yield self if block_given?
976
+ end
977
+
978
+ # @param [Integer] value delta for the operation
979
+ def delta=(value)
980
+ raise ArgumentError, "the delta cannot be less than 0" if delta.negative?
981
+
982
+ @delta = value
983
+ end
984
+
985
+ # @api private
986
+ def to_backend
987
+ {
988
+ timeout: @timeout.respond_to?(:in_milliseconds) ? @timeout.public_send(:in_milliseconds) : @timeout,
989
+ delta: @delta,
990
+ initial_value: @initial,
991
+ expiry: @expiry,
992
+ durability_level: @durability_level,
993
+ }
994
+ end
995
+ end
996
+
997
+ # Options for {Datastructures::CouchbaseList#initialize}
998
+ class CouchbaseList
999
+ attr_accessor :get_options # @return [Get]
1000
+ attr_accessor :remove_options # @return [Remove]
1001
+ attr_accessor :lookup_in_options # @return [LookupIn]
1002
+ attr_accessor :mutate_in_options # @return [MutateIn]
1003
+
1004
+ # Creates an instance of options for {CouchbaseList#initialize}
1005
+ #
1006
+ # @param [Get] get_options
1007
+ # @param [Remove] remove_options
1008
+ # @param [LookupIn] lookup_in_options
1009
+ # @param [MutateIn] mutate_in_options
1010
+ #
1011
+ # @yieldparam [CouchbaseList]
1012
+ def initialize(get_options: Get.new,
1013
+ remove_options: Remove.new,
1014
+ lookup_in_options: LookupIn.new,
1015
+ mutate_in_options: MutateIn.new(store_semantics: :upsert))
1016
+ @get_options = get_options
1017
+ @remove_options = remove_options
1018
+ @lookup_in_options = lookup_in_options
1019
+ @mutate_in_options = mutate_in_options
1020
+ yield self if block_given?
1021
+ end
1022
+ end
1023
+
1024
+ # Options for {Datastructures::CouchbaseMap#initialize}
1025
+ class CouchbaseMap
1026
+ attr_accessor :get_options # @return [Get]
1027
+ attr_accessor :remove_options # @return [Remove]
1028
+ attr_accessor :lookup_in_options # @return [LookupIn]
1029
+ attr_accessor :mutate_in_options # @return [MutateIn]
1030
+
1031
+ # Creates an instance of options for {CouchbaseMap#initialize}
1032
+ #
1033
+ # @param [Get] get_options
1034
+ # @param [Remove] remove_options
1035
+ # @param [LookupIn] lookup_in_options
1036
+ # @param [MutateIn] mutate_in_options
1037
+ #
1038
+ # @yieldparam [CouchbaseMap]
1039
+ def initialize(get_options: Get.new,
1040
+ remove_options: Remove.new,
1041
+ lookup_in_options: LookupIn.new,
1042
+ mutate_in_options: MutateIn.new(store_semantics: :upsert))
1043
+ @get_options = get_options
1044
+ @remove_options = remove_options
1045
+ @lookup_in_options = lookup_in_options
1046
+ @mutate_in_options = mutate_in_options
1047
+ yield self if block_given?
1048
+ end
1049
+ end
1050
+
1051
+ # Options for {Datastructures::CouchbaseQueue#initialize}
1052
+ class CouchbaseQueue
1053
+ attr_accessor :get_options # @return [Get]
1054
+ attr_accessor :remove_options # @return [Remove]
1055
+ attr_accessor :lookup_in_options # @return [LookupIn]
1056
+ attr_accessor :mutate_in_options # @return [MutateIn]
1057
+
1058
+ # Creates an instance of options for {CouchbaseQueue#initialize}
1059
+ #
1060
+ # @param [Get] get_options
1061
+ # @param [Remove] remove_options
1062
+ # @param [LookupIn] lookup_in_options
1063
+ # @param [MutateIn] mutate_in_options
1064
+ #
1065
+ # @yieldparam [CouchbaseQueue]
1066
+ def initialize(get_options: Get.new,
1067
+ remove_options: Remove.new,
1068
+ lookup_in_options: LookupIn.new,
1069
+ mutate_in_options: MutateIn.new(store_semantics: :upsert))
1070
+ @get_options = get_options
1071
+ @remove_options = remove_options
1072
+ @lookup_in_options = lookup_in_options
1073
+ @mutate_in_options = mutate_in_options
1074
+ yield self if block_given?
1075
+ end
1076
+ end
1077
+
1078
+ # Options for {Datastructures::CouchbaseSet#initialize}
1079
+ class CouchbaseSet
1080
+ attr_accessor :get_options # @return [Get]
1081
+ attr_accessor :remove_options # @return [Remove]
1082
+ attr_accessor :lookup_in_options # @return [LookupIn]
1083
+ attr_accessor :mutate_in_options # @return [MutateIn]
1084
+
1085
+ # Creates an instance of options for {CouchbaseSet#initialize}
1086
+ #
1087
+ # @param [Get] get_options
1088
+ # @param [Remove] remove_options
1089
+ # @param [LookupIn] lookup_in_options
1090
+ # @param [MutateIn] mutate_in_options
1091
+ #
1092
+ # @yieldparam [CouchbaseSet]
1093
+ def initialize(get_options: Get.new,
1094
+ remove_options: Remove.new,
1095
+ lookup_in_options: LookupIn.new,
1096
+ mutate_in_options: MutateIn.new(store_semantics: :upsert))
1097
+ @get_options = get_options
1098
+ @remove_options = remove_options
1099
+ @lookup_in_options = lookup_in_options
1100
+ @mutate_in_options = mutate_in_options
1101
+ yield self if block_given?
1102
+ end
1103
+ end
1104
+
1105
+ # Options for {Couchbase::Cluster.connect}
1106
+ class Cluster
1107
+ attr_accessor :authenticator # @return [PasswordAuthenticator, CertificateAuthenticator]
1108
+
1109
+ # Creates an instance of options for {Couchbase::Cluster.connect}
1110
+ #
1111
+ # @param [PasswordAuthenticator, CertificateAuthenticator] authenticator
1112
+ #
1113
+ # @yieldparam [Cluster] self
1114
+ def initialize(authenticator: nil)
1115
+ @authenticator = authenticator
1116
+ yield self if block_given?
1117
+ end
1118
+
1119
+ # @param [String] username
1120
+ # @param [String] password
1121
+ def authenticate(username, password)
1122
+ @authenticator = PasswordAuthenticator.new(username, password)
1123
+ end
1124
+ end
1125
+
1126
+ # Options for {Couchbase::Cluster#diagnostics}
1127
+ class Diagnostics
1128
+ attr_accessor :report_id # @return [String]
1129
+
1130
+ # Creates an instance of options for {Couchbase::Cluster#diagnostics}
1131
+ #
1132
+ # @param [String] report_id Holds custom report ID.
1133
+ #
1134
+ # @yieldparam [Diagnostics] self
1135
+ def initialize(report_id: nil)
1136
+ @report_id = report_id
1137
+ yield self if block_given?
1138
+ end
1139
+ end
1140
+
1141
+ # Options for {Couchbase::Bucket#ping}
1142
+ class Ping
1143
+ attr_accessor :report_id # @return [String]
1144
+ attr_accessor :service_types # @return [Array<Symbol>]
1145
+ attr_accessor :timeout # @return [Integer, #in_milliseconds]
1146
+
1147
+ # Creates an instance of options for {Couchbase::Bucket#ping}
1148
+ #
1149
+ # @param [String] report_id Holds custom report id.
1150
+ # @@param [Array<Symbol>] service_types The service types to limit this diagnostics request
1151
+ # @param [Integer, #in_milliseconds] timeout
1152
+ #
1153
+ # @yieldparam [Ping] self
1154
+ def initialize(report_id: nil,
1155
+ service_types: [:kv, :query, :analytics, :search, :views, :management],
1156
+ timeout: nil)
1157
+ @report_id = report_id
1158
+ @service_types = service_types
1159
+ @timeout = timeout
1160
+ yield self if block_given?
1161
+ end
1162
+
1163
+ # @api private
1164
+ def to_backend
1165
+ {
1166
+ timeout: @timeout.respond_to?(:in_milliseconds) ? @timeout.public_send(:in_milliseconds) : @timeout,
1167
+ service_types: @service_types,
1168
+ report_id: @report_id,
1169
+ }
1170
+ end
1171
+ end
1172
+
1173
+ # Options for {Couchbase::Cluster#analytics_query}
1174
+ class Analytics < Base
1175
+ attr_accessor :client_context_id # @return [String]
1176
+ attr_accessor :scan_consistency # @return [Symbol]
1177
+ attr_accessor :readonly # @return [Boolean]
1178
+ attr_accessor :priority # @return [Boolean]
1179
+ attr_accessor :transcoder # @return [JsonTranscoder, #decode(String)]
1180
+ attr_accessor :scope_qualifier # @return [String]
1181
+
1182
+ # Creates new instance of options for {Couchbase::Cluster#analytics_query}
1183
+ #
1184
+ # @param [String] client_context_id provides a custom client context ID for this query
1185
+ # @param [Symbol] scan_consistency specifies level of consistency for the query
1186
+ # +:not_bounded+::
1187
+ # The index will return whatever state it has to the analytics query engine at the time of query.
1188
+ #
1189
+ # This is the default (for single-statement requests). No timestamp vector is used in the index scan.
1190
+ # This is also the fastest mode, because we avoid the cost of obtaining the vector, and we also avoid
1191
+ # any wait for the index
1192
+ # +:request_plus+::
1193
+ # The index will wait until all mutations have been processed at the time of request before being processed
1194
+ # in the analytics query engine.
1195
+ #
1196
+ # This implements strong consistency per request. Before processing the request, a current vector is obtained.
1197
+ # The vector is used as a lower bound for the statements in the request.
1198
+ # @param [Boolean] readonly allows explicitly marking a query as being readonly and not mutating any documents on
1199
+ # the server side.
1200
+ # @param [Boolean] priority allows to give certain requests higher priority than others
1201
+ # @param [JsonTranscoder] transcoder to decode rows
1202
+ # @param [Array<#to_json>, nil] positional_parameters parameters to be used as substitution for numbered macros
1203
+ # like +$1+, +$2+ in query string
1204
+ # @param [Hash<String => #to_json>, nil] named_parameters parameters to be used as substitution for named macros
1205
+ # like +$name+ in query string
1206
+ # @param [String, nil] scope_qualifier Associate scope qualifier (also known as +query_context+) with the query.
1207
+ # The qualifier must be in form +{bucket_name}.{scope_name}+ or +default:{bucket_name}.{scope_name}+.
1208
+ #
1209
+ # @param [Integer, #in_milliseconds, nil] timeout
1210
+ # @param [Proc, nil] retry_strategy the custom retry strategy, if set
1211
+ # @param [Hash, nil] client_context the client context data, if set
1212
+ # @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
1213
+ #
1214
+ # @note Either +positional_parameters+ or +named_parameters+ may be specified.
1215
+ #
1216
+ # @yieldparam [Analytics] self
1217
+ def initialize(client_context_id: nil,
1218
+ scan_consistency: nil,
1219
+ readonly: false,
1220
+ priority: nil,
1221
+ transcoder: JsonTranscoder.new,
1222
+ positional_parameters: nil,
1223
+ named_parameters: nil,
1224
+ scope_qualifier: nil,
1225
+ timeout: nil,
1226
+ retry_strategy: nil,
1227
+ client_context: nil,
1228
+ parent_span: nil)
1229
+ raise ArgumentError, "Cannot pass positional and named parameters at the same time" if positional_parameters && named_parameters
1230
+
1231
+ super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
1232
+ @client_context_id = client_context_id
1233
+ @scan_consistency = scan_consistency
1234
+ @readonly = readonly
1235
+ @priority = priority
1236
+ @transcoder = transcoder
1237
+ @positional_parameters = positional_parameters
1238
+ @named_parameters = named_parameters
1239
+ @scope_qualifier = scope_qualifier
1240
+ @raw_parameters = {}
1241
+ yield self if block_given?
1242
+ end
1243
+
1244
+ # Sets positional parameters for the query
1245
+ #
1246
+ # @param [Array] positional the list of parameters that have to be substituted in the statement
1247
+ def positional_parameters(positional)
1248
+ @positional_parameters = positional
1249
+ @named_parameters = nil
1250
+ end
1251
+
1252
+ # Sets named parameters for the query
1253
+ #
1254
+ # @param [Hash] named the key/value map of the parameters to substitute in the statement
1255
+ def named_parameters(named)
1256
+ @named_parameters = named
1257
+ @positional_parameters = nil
1258
+ end
1259
+
1260
+ # Allows providing custom JSON key/value pairs for advanced usage
1261
+ #
1262
+ # @param [String] key the parameter name (key of the JSON property)
1263
+ # @param [Object] value the parameter value (value of the JSON property)
1264
+ def raw(key, value)
1265
+ @raw_parameters[key] = JSON.generate(value)
1266
+ end
1267
+
1268
+ # @api private
1269
+ def to_backend(scope_name: nil, bucket_name: nil)
1270
+ {
1271
+ timeout: @timeout.respond_to?(:in_milliseconds) ? @timeout.public_send(:in_milliseconds) : @timeout,
1272
+ client_context_id: @client_context_id,
1273
+ scan_consistency: @scan_consistency,
1274
+ readonly: @readonly,
1275
+ priority: @priority,
1276
+ positional_parameters: export_positional_parameters,
1277
+ named_parameters: export_named_parameters,
1278
+ raw_parameters: @raw_parameters,
1279
+ scope_qualifier: @scope_qualifier,
1280
+ scope_name: scope_name,
1281
+ bucket_name: bucket_name,
1282
+ }
1283
+ end
1284
+
1285
+ private
1286
+
1287
+ # @api private
1288
+ # @return [Array<String>, nil]
1289
+ def export_positional_parameters
1290
+ @positional_parameters&.map { |p| JSON.dump(p) }
1291
+ end
1292
+
1293
+ # @api private
1294
+ # @return [Hash<String => String>, nil]
1295
+ def export_named_parameters
1296
+ @named_parameters&.each_with_object({}) { |(n, v), o| o[n.to_s] = JSON.dump(v) }
1297
+ end
1298
+
1299
+ # @api private
1300
+ # @return [Hash<String => #to_json>]
1301
+ attr_reader :raw_parameters
1302
+ end
1303
+
1304
+ # Options for {Couchbase::Cluster#query}
1305
+ class Query < Base
1306
+ attr_accessor :adhoc # @return [Boolean]
1307
+ attr_accessor :client_context_id # @return [String]
1308
+ attr_accessor :max_parallelism # @return [Integer]
1309
+ attr_accessor :readonly # @return [Boolean]
1310
+ attr_accessor :scan_wait # @return [Integer, #in_milliseconds]
1311
+ attr_accessor :scan_cap # @return [Integer]
1312
+ attr_accessor :pipeline_batch # @return [Integer]
1313
+ attr_accessor :pipeline_cap # @return [Integer]
1314
+ attr_accessor :metrics # @return [Boolean]
1315
+ attr_accessor :profile # @return [Symbol]
1316
+ attr_accessor :flex_index # @return [Boolean]
1317
+ attr_accessor :scope_qualifier # @return [String]
1318
+ attr_accessor :transcoder # @return [JsonTranscoder, #decode(String)]
1319
+
1320
+ # Creates new instance of options for {Couchbase::Cluster#query}
1321
+ #
1322
+ # @param [Boolean] adhoc allows turning this request into a prepared statement query
1323
+ # @param [String, nil] client_context_id provides a custom client context ID for this query
1324
+ # @param [Integer, nil] max_parallelism allows overriding the default maximum parallelism for the query execution
1325
+ # on the server side.
1326
+ # @param [Boolean, nil] readonly allows explicitly marking a query as being readonly and not mutating any
1327
+ # documents on the server side.
1328
+ # @param [Integer, #in_milliseconds, nil] scan_wait The maximum duration (in milliseconds) the query engine
1329
+ # is willing to wait before failing. Allows customizing how long (in milliseconds) the query engine is willing
1330
+ # to wait until the index catches up to whatever scan consistency is asked for in this query. Note that if
1331
+ # +:not_bounded+ consistency level is used, this method doesn't do anything at all. If no value is provided to
1332
+ # this method, the server default is used.
1333
+ # @param [Integer, nil] scan_cap customize the maximum buffered channel size between the indexer and the query
1334
+ # service
1335
+ # @param [Integer, nil] pipeline_cap customize the number of items execution operators can batch for fetch
1336
+ # from the Key Value layer on the server.
1337
+ # @param [Integer, nil] pipeline_batch customize the maximum number of items each execution operator can buffer
1338
+ # between various operators on the server.
1339
+ # @param [Boolean, nil] metrics enables per-request metrics in the trailing section of the query
1340
+ # @param [Symbol] profile customize server profile level for this query
1341
+ # +:off+::
1342
+ # No profiling information is added to the query response
1343
+ # +:phases+::
1344
+ # The query response includes a profile section with stats and details about various phases of the query plan
1345
+ # and execution. Three phase times will be included in the +system:active_requests+ and
1346
+ # +system:completed_requests+ monitoring keyspaces.
1347
+ # +:timings+::
1348
+ # Besides the phase times, the profile section of the query response document will include a full query plan
1349
+ # with timing and information about the number of processed documents at each phase. This information will be
1350
+ # included in the system:active_requests and system:completed_requests keyspaces.
1351
+ # @param [Symbol, nil] scan_consistency Sets the mutation tokens this query should be consistent with. Overrides
1352
+ # +mutation_state+.
1353
+ # +:not_bounded+::
1354
+ # The indexer will return whatever state it has to the query engine at the time of query. This is the default
1355
+ # (for single-statement requests).
1356
+ # +:request_plus+::
1357
+ # The indexer will wait until all mutations have been processed at the time of request before returning to
1358
+ # the query engine.
1359
+ # @param [Boolean, nil] flex_index Tells the query engine to use a flex index (utilizing the search service)
1360
+ # @param [String, nil] scope_qualifier Associate scope qualifier (also known as +query_context+) with the query.
1361
+ # The qualifier must be in form +{bucket_name}.{scope_name}+ or +default:{bucket_name}.{scope_name}+.
1362
+ # @param [JsonTranscoder] transcoder to decode rows
1363
+ # @param [Array<#to_json>, nil] positional_parameters parameters to be used as substitution for numbered macros
1364
+ # like +$1+, +$2+ in query string
1365
+ # @param [Hash<String => #to_json>, nil] named_parameters parameters to be used as substitution for named macros
1366
+ # like +$name+ in query string.
1367
+ #
1368
+ # @param [MutationState, nil] mutation_state Sets the mutation tokens this query should be consistent with.
1369
+ # Overrides +scan_consistency+.
1370
+ #
1371
+ # @param [Integer, #in_milliseconds, nil] timeout
1372
+ # @param [Proc, nil] retry_strategy the custom retry strategy, if set
1373
+ # @param [Hash, nil] client_context the client context data, if set
1374
+ # @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
1375
+ #
1376
+ # @note Either +positional_parameters+ or +named_parameters+ may be specified.
1377
+ #
1378
+ # @yieldparam [Query] self
1379
+ def initialize(adhoc: true,
1380
+ client_context_id: nil,
1381
+ max_parallelism: nil,
1382
+ readonly: false,
1383
+ scan_wait: nil,
1384
+ scan_cap: nil,
1385
+ pipeline_cap: nil,
1386
+ pipeline_batch: nil,
1387
+ metrics: nil,
1388
+ profile: :off,
1389
+ flex_index: nil,
1390
+ scope_qualifier: nil,
1391
+ scan_consistency: :not_bounded,
1392
+ mutation_state: nil,
1393
+ transcoder: JsonTranscoder.new,
1394
+ positional_parameters: nil,
1395
+ named_parameters: nil,
1396
+ timeout: nil,
1397
+ retry_strategy: nil,
1398
+ client_context: nil,
1399
+ parent_span: nil)
1400
+ raise ArgumentError, "Cannot pass positional and named parameters at the same time" if positional_parameters && named_parameters
1401
+
1402
+ super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
1403
+ @adhoc = adhoc
1404
+ @client_context_id = client_context_id
1405
+ @max_parallelism = max_parallelism
1406
+ @readonly = readonly
1407
+ @scan_wait = scan_wait
1408
+ @scan_cap = scan_cap
1409
+ @pipeline_cap = pipeline_cap
1410
+ @pipeline_batch = pipeline_batch
1411
+ @metrics = metrics
1412
+ @profile = profile
1413
+ @flex_index = flex_index
1414
+ @scope_qualifier = scope_qualifier
1415
+ @scan_consistency = scan_consistency
1416
+ @mutation_state = mutation_state
1417
+ @transcoder = transcoder
1418
+ @positional_parameters = positional_parameters
1419
+ @named_parameters = named_parameters
1420
+ @raw_parameters = {}
1421
+ yield self if block_given?
1422
+ end
1423
+
1424
+ # Allows providing custom JSON key/value pairs for advanced usage
1425
+ #
1426
+ # @param [String] key the parameter name (key of the JSON property)
1427
+ # @param [Object] value the parameter value (value of the JSON property)
1428
+ def raw(key, value)
1429
+ @raw_parameters[key] = JSON.generate(value)
1430
+ end
1431
+
1432
+ # Customizes the consistency guarantees for this query
1433
+ #
1434
+ # @note overrides consistency level set by {#consistent_with}
1435
+ #
1436
+ # [+:not_bounded+] The indexer will return whatever state it has to the query engine at the time of query. This is the default (for
1437
+ # single-statement requests).
1438
+ #
1439
+ # [+:request_plus+] The indexer will wait until all mutations have been processed at the time of request before returning to the query
1440
+ # engine.
1441
+ #
1442
+ # @param [:not_bounded, :request_plus] level the index scan consistency to be used for this query
1443
+ def scan_consistency=(level)
1444
+ @mutation_state = nil if @mutation_state
1445
+ @scan_consistency = level
1446
+ end
1447
+
1448
+ # Sets the mutation tokens this query should be consistent with
1449
+ #
1450
+ # @note overrides consistency level set by {#scan_consistency=}
1451
+ #
1452
+ # @param [MutationState] mutation_state the mutation state containing the mutation tokens
1453
+ def consistent_with(mutation_state)
1454
+ @scan_consistency = nil if @scan_consistency
1455
+ @mutation_state = mutation_state
1456
+ end
1457
+
1458
+ # Sets positional parameters for the query
1459
+ #
1460
+ # @param [Array] positional the list of parameters that have to be substituted in the statement
1461
+ def positional_parameters(positional)
1462
+ @positional_parameters = positional
1463
+ @named_parameters = nil
1464
+ end
1465
+
1466
+ # @api private
1467
+ # @return [Array<String>, nil]
1468
+ def export_positional_parameters
1469
+ @positional_parameters&.map { |p| JSON.dump(p) }
1470
+ end
1471
+
1472
+ # Sets named parameters for the query
1473
+ #
1474
+ # @param [Hash] named the key/value map of the parameters to substitute in the statement
1475
+ def named_parameters(named)
1476
+ @named_parameters = named
1477
+ @positional_parameters = nil
1478
+ end
1479
+
1480
+ # @api private
1481
+ # @return [Hash<String => String>, nil]
1482
+ def export_named_parameters
1483
+ @named_parameters&.each_with_object({}) { |(n, v), o| o[n.to_s] = JSON.dump(v) }
1484
+ end
1485
+
1486
+ # @api private
1487
+ # @return [MutationState]
1488
+ attr_reader :mutation_state
1489
+
1490
+ # @api private
1491
+ # @return [Hash<String => #to_json>]
1492
+ attr_reader :raw_parameters
1493
+
1494
+ # @api private
1495
+ def to_backend(scope_name: nil, bucket_name: nil)
1496
+ {
1497
+ timeout: @timeout.respond_to?(:in_milliseconds) ? @timeout.public_send(:in_milliseconds) : @timeout,
1498
+ adhoc: @adhoc,
1499
+ client_context_id: @client_context_id,
1500
+ max_parallelism: @max_parallelism,
1501
+ readonly: @readonly,
1502
+ flex_index: @flex_index,
1503
+ scan_wait: @scan_wait.respond_to?(:in_milliseconds) ? @scan_wait.public_send(:in_milliseconds) : @scan_wait,
1504
+ scan_cap: @scan_cap,
1505
+ pipeline_batch: @pipeline_batch,
1506
+ pipeline_cap: @pipeline_cap,
1507
+ metrics: @metrics,
1508
+ profile: @profile,
1509
+ positional_parameters: export_positional_parameters,
1510
+ named_parameters: export_named_parameters,
1511
+ raw_parameters: @raw_parameters,
1512
+ scan_consistency: @scan_consistency,
1513
+ mutation_state: @mutation_state&.to_a,
1514
+ scope_qualifier: @scope_qualifier,
1515
+ scope_name: scope_name,
1516
+ bucket_name: bucket_name,
1517
+ }
1518
+ end
1519
+ end
1520
+
1521
+ # Options for {Couchbase::Cluster#search_query}
1522
+ class Search < Base
1523
+ attr_accessor :limit # @return [Integer]
1524
+ attr_accessor :skip # @return [Integer]
1525
+ attr_accessor :explain # @return [Boolean]
1526
+ attr_accessor :highlight_style # @return [Symbol]
1527
+ attr_accessor :highlight_fields # @return [Array<String>]
1528
+ attr_accessor :fields # @return [Array<String>]
1529
+ attr_accessor :disable_scoring # @return [Boolean]
1530
+ attr_accessor :sort # @return [Array<String, Cluster::SearchSort>]
1531
+ attr_accessor :facets # @return [Hash<String => Cluster::SearchFacet>]
1532
+ attr_accessor :transcoder # @return [JsonTranscoder, #decode(String)]
1533
+
1534
+ # @param [Integer] limit limits the number of matches returned from the complete result set.
1535
+ # @param [Integer] skip indicates how many matches are skipped on the result set before starting to return the
1536
+ # matches
1537
+ # @param [Boolean] explain triggers inclusion of additional search result score explanations.
1538
+ # @param [:html, :ansi, nil] highlight_style the style of highlighting in the result excerpts (if not specified,
1539
+ # the server default will be used)
1540
+ # @param [Array<String>] highlight_fields list of the fields to highlight
1541
+ # @param [Array<String>] fields list of field values which should be retrieved for result documents, provided they
1542
+ # were stored while indexing
1543
+ # @param [MutationState] mutation_state the mutation tokens this query should be consistent with
1544
+ # @param [Boolean] disable_scoring If set to true, the server will not perform any scoring on the hits
1545
+ # @param [Array<String, Cluster::SearchSort>] sort Ordering rules to apply to the results. The list might contain
1546
+ # either strings or special objects, that derive from {Cluster::SearchSort}. In case of String, the value
1547
+ # represents the name of the field with optional +-+ in front of the name, which will turn on descending mode
1548
+ # for this field. One field is special is +"_score"+ which will sort results by their score. When nothing
1549
+ # specified, the Server will order results by their score descending, which is equivalent of +"-_score"+.
1550
+ # @param [Hash<String => Cluster::SearchFacet>] facets facets allow to aggregate information collected on a
1551
+ # particular result set
1552
+ # @param [JsonTranscoder, #decode(String)] transcoder to use for the results
1553
+ #
1554
+ # @param [Integer, #in_milliseconds, nil] timeout
1555
+ # @param [Proc, nil] retry_strategy the custom retry strategy, if set
1556
+ # @param [Hash, nil] client_context the client context data, if set
1557
+ # @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
1558
+ #
1559
+ # @yieldparam [Search] self
1560
+ def initialize(limit: nil,
1561
+ skip: nil,
1562
+ explain: false,
1563
+ highlight_style: nil,
1564
+ highlight_fields: nil,
1565
+ fields: nil,
1566
+ mutation_state: nil,
1567
+ disable_scoring: false,
1568
+ sort: nil,
1569
+ facets: nil,
1570
+ transcoder: JsonTranscoder.new,
1571
+ timeout: nil,
1572
+ retry_strategy: nil,
1573
+ client_context: nil,
1574
+ parent_span: nil)
1575
+ super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
1576
+ @limit = limit
1577
+ @skip = skip
1578
+ @explain = explain
1579
+ @highlight_style = highlight_style
1580
+ @highlight_fields = highlight_fields
1581
+ @fields = fields
1582
+ @disable_scoring = disable_scoring
1583
+ @sort = sort
1584
+ @facets = facets
1585
+ @transcoder = transcoder
1586
+ @scan_consistency = :not_bounded
1587
+ @mutation_state = mutation_state
1588
+ yield self if block_given?
1589
+ end
1590
+
1591
+ # Sets the mutation tokens this query should be consistent with
1592
+ #
1593
+ # @note overrides consistency level set by {#scan_consistency=}
1594
+ #
1595
+ # @param [MutationState] mutation_state the mutation state containing the mutation tokens
1596
+ #
1597
+ # @return [void]
1598
+ def consistent_with(mutation_state)
1599
+ @scan_consistency = nil if @scan_consistency
1600
+ @mutation_state = mutation_state
1601
+ end
1602
+
1603
+ # Customizes the consistency guarantees for this query
1604
+ #
1605
+ # @note overrides consistency level set by {#consistent_with}
1606
+ #
1607
+ # @param [:not_bounded] level the scan consistency to be used for this query
1608
+ # +:not_bounded+:: The engine will return whatever state it has at the time of query
1609
+ #
1610
+ # @return [void]
1611
+ def scan_consistency=(level)
1612
+ @mutation_state = nil if @mutation_state
1613
+ @scan_consistency = level
1614
+ end
1615
+
1616
+ # @api private
1617
+ # @return [MutationState]
1618
+ attr_reader :mutation_state
1619
+
1620
+ # @api private
1621
+ # @return [Symbol
1622
+ attr_reader :scan_consistency
1623
+
1624
+ # @api private
1625
+ def to_backend
1626
+ {
1627
+ timeout: @timeout.respond_to?(:in_milliseconds) ? @timeout.public_send(:in_milliseconds) : @timeout,
1628
+ limit: @limit,
1629
+ skip: @skip,
1630
+ explain: @explain,
1631
+ disable_scoring: @disable_scoring,
1632
+ highlight_style: @highlight_style,
1633
+ highlight_fields: @highlight_fields,
1634
+ fields: @fields,
1635
+ sort: @sort&.map { |v| JSON.generate(v) },
1636
+ facets: @facets&.map { |(k, v)| [k, JSON.generate(v)] },
1637
+ scan_consistency: @scan_consistency,
1638
+ mutation_state: @mutation_state&.to_a,
1639
+ }
1640
+ end
1641
+ end
1642
+
1643
+ # Options for {Couchbase::Cluster#view_query}
1644
+ class View < Base
1645
+ attr_accessor :scan_consistency # @return [Symbol]
1646
+ attr_accessor :namespace # @return [Symbol]
1647
+ attr_accessor :skip # @return [Integer]
1648
+ attr_accessor :limit # @return [Integer]
1649
+ attr_accessor :start_key # @return [#to_json, nil]
1650
+ attr_accessor :end_key # @return [#to_json, nil]
1651
+ attr_accessor :start_key_doc_id # @return [String, nil]
1652
+ attr_accessor :end_key_doc_id # @return [String, nil]
1653
+ attr_accessor :inclusive_end # @return [Boolean, nil]
1654
+ attr_accessor :group # @return [Boolean, nil]
1655
+ attr_accessor :group_level # @return [Integer, nil]
1656
+ attr_accessor :key # @return [#to_json, nil]
1657
+ attr_accessor :keys # @return [Array<#to_json>, nil]
1658
+ attr_accessor :order # @return [Symbol, nil]
1659
+ attr_accessor :reduce # @return [Boolean, nil]
1660
+ attr_accessor :on_error # @return [Symbol, nil]
1661
+ attr_accessor :debug # @return [Boolean, nil]
1662
+
1663
+ # @param [:not_bounded, :request_plus, :update_after] scan_consistency Specifies the level of consistency for the query
1664
+ # @param [:production, :development] namespace
1665
+ # @param [Integer, nil] skip Specifies the number of results to skip from the start of the result set
1666
+ # @param [Integer, nil] limit Specifies the maximum number of results to return
1667
+ # @param [#to_json, nil] start_key Specifies the key, to which the engine has to skip before result generation
1668
+ # @param [#to_json, nil] end_key Specifies the key, at which the result generation has to be stopped
1669
+ # @param [String, nil] start_key_doc_id Specifies the document id in case {#start_key} gives multiple results within the index
1670
+ # @param [String, nil] end_key_doc_id Specifies the document id in case {#end_key} gives multiple results within the index
1671
+ # @param [Boolean, nil] inclusive_end Specifies whether the {#end_key}/#{#end_key_doc_id} values should be inclusive
1672
+ # @param [Boolean, nil] group Specifies whether to enable grouping of the results
1673
+ # @param [Integer, nil] group_level Specifies the depth within the key to group the results
1674
+ # @param [#to_json, nil] key Specifies the key to fetch from the index
1675
+ # @param [Array<#to_json>, nil] keys Specifies set of the keys to fetch from the index
1676
+ # @param [:ascending, :descending, nil] order Specifies the order of the results that should be returned
1677
+ # @param [Boolean, nil] reduce Specifies whether to enable the reduction function associated with this particular
1678
+ # view index
1679
+ # @param [:stop, :continue, nil] on_error Specifies the behaviour of the view engine should an error occur during
1680
+ # the gathering of view index results which would result in only partial results being available
1681
+ # @param [Boolean, nil] debug allows to return debug information as part of the view response
1682
+ #
1683
+ # @param [Integer, #in_milliseconds, nil] timeout
1684
+ # @param [Proc, nil] retry_strategy the custom retry strategy, if set
1685
+ # @param [Hash, nil] client_context the client context data, if set
1686
+ # @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
1687
+ #
1688
+ # @yieldparam [View] self
1689
+ def initialize(scan_consistency: :not_bounded,
1690
+ namespace: :production,
1691
+ skip: nil,
1692
+ limit: nil,
1693
+ start_key: nil,
1694
+ end_key: nil,
1695
+ start_key_doc_id: nil,
1696
+ end_key_doc_id: nil,
1697
+ inclusive_end: nil,
1698
+ group: nil,
1699
+ group_level: nil,
1700
+ key: nil,
1701
+ keys: nil,
1702
+ order: nil,
1703
+ reduce: nil,
1704
+ on_error: nil,
1705
+ debug: false,
1706
+ timeout: nil,
1707
+ retry_strategy: nil,
1708
+ client_context: nil,
1709
+ parent_span: nil)
1710
+ super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
1711
+
1712
+ @scan_consistency = scan_consistency
1713
+ @namespace = namespace
1714
+ @skip = skip
1715
+ @limit = limit
1716
+ @start_key = start_key
1717
+ @end_key = end_key
1718
+ @start_key_doc_id = start_key_doc_id
1719
+ @end_key_doc_id = end_key_doc_id
1720
+ @inclusive_end = inclusive_end
1721
+ @group = group
1722
+ @group_level = group_level
1723
+ @key = key
1724
+ @keys = keys
1725
+ @order = order
1726
+ @reduce = reduce
1727
+ @on_error = on_error
1728
+ @debug = debug
1729
+ yield self if block_given?
1730
+ end
1731
+
1732
+ # Allows providing custom JSON key/value pairs for advanced usage
1733
+ #
1734
+ # @param [String] key the parameter name (key of the JSON property)
1735
+ # @param [Object] value the parameter value (value of the JSON property)
1736
+ def raw(key, value)
1737
+ @raw_parameters[key] = JSON.generate(value)
1738
+ end
1739
+
1740
+ # @api private
1741
+ def to_backend
1742
+ {
1743
+ timeout: @timeout.respond_to?(:in_milliseconds) ? @timeout.public_send(:in_milliseconds) : @timeout,
1744
+ scan_consistency: @scan_consistency,
1745
+ skip: @skip,
1746
+ limit: @limit,
1747
+ start_key: (JSON.generate(@start_key) unless @start_key.nil?),
1748
+ end_key: (JSON.generate(@end_key) unless @end_key.nil?),
1749
+ start_key_doc_id: @start_key_doc_id,
1750
+ end_key_doc_id: @end_key_doc_id,
1751
+ inclusive_end: @inclusive_end,
1752
+ group: @group,
1753
+ group_level: @group_level,
1754
+ key: (JSON.generate(@key) unless @key.nil?),
1755
+ keys: @keys&.map { |key| JSON.generate(key) },
1756
+ order: @order,
1757
+ reduce: @reduce,
1758
+ on_error: @on_error,
1759
+ debug: @debug,
1760
+ }
1761
+ end
1762
+ end
1763
+
1764
+ # @api private
1765
+ # TODO: deprecate in 3.1
1766
+ CommonOptions = ::Couchbase::Options::Base
1767
+
1768
+ # rubocop:disable Naming/MethodName constructor shortcuts
1769
+ module_function
1770
+
1771
+ # Construct {Get} options for {Collection#get}
1772
+ #
1773
+ # @example Get partial document using projections
1774
+ # res = collection.get("customer123", Options::Get(projections: ["name", "addresses.billing"]))
1775
+ # res.content
1776
+ #
1777
+ # # {"addresses"=>
1778
+ # # {"billing"=>
1779
+ # # {"country"=>"United Kingdom",
1780
+ # # "line1"=>"123 Any Street",
1781
+ # # "line2"=>"Anytown"}},
1782
+ # # "name"=>"Douglas Reynholm"}
1783
+ #
1784
+ # @return [Get]
1785
+ def Get(**args)
1786
+ Get.new(**args)
1787
+ end
1788
+
1789
+ # Construct {GetMulti} options for {Collection#get_multi}
1790
+ #
1791
+ # @example Fetch "foo" and "bar" in a batch
1792
+ # res = collection.get(["foo", "bar"], Options::GetMulti(timeout: 3_000))
1793
+ # res[0].content #=> content of "foo"
1794
+ # res[1].content #=> content of "bar"
1795
+ #
1796
+ # @return [GetMulti]
1797
+ def GetMulti(**args)
1798
+ GetMulti.new(**args)
1799
+ end
1800
+
1801
+ # Construct {GetAndLock} options for {Collection#get_and_lock}
1802
+ #
1803
+ # @example Retrieve document and lock for 10 seconds
1804
+ # collection.get_and_lock("customer123", 10, Options::GetAndLock(timeout: 3_000))
1805
+ #
1806
+ # @return [GetAndLock]
1807
+ def GetAndLock(**args)
1808
+ GetAndLock.new(**args)
1809
+ end
1810
+
1811
+ # Construct {GetAndTouch} options for {Collection#get_and_touch}
1812
+ #
1813
+ # @example Retrieve document and prolong its expiration for 10 seconds
1814
+ # collection.get_and_touch("customer123", 10, Options::GetAndTouch(timeout: 3_000))
1815
+ #
1816
+ # @return [GetAndTouch]
1817
+ def GetAndTouch(**args)
1818
+ GetAndTouch.new(**args)
1819
+ end
1820
+
1821
+ # Construct {GetAllReplicas} options for {Collection#get_any_replica}
1822
+ #
1823
+ # @return [GetAllReplicas]
1824
+ def GetAllReplicas(**args)
1825
+ GetAllReplicas.new(**args)
1826
+ end
1827
+
1828
+ # Construct {GetAnyReplica} options for {Collection#get_all_replicas}
1829
+ #
1830
+ # @return [GetAnyReplica]
1831
+ def GetAnyReplica(**args)
1832
+ GetAnyReplica.new(**args)
1833
+ end
1834
+
1835
+ # Construct {Exists} options for {Collection#exists}
1836
+ #
1837
+ # @example Check if the document exists without fetching its contents
1838
+ # res = collection.exists("customer123", Options::Exists(timeout: 3_000))
1839
+ # res.exists? #=> true
1840
+ #
1841
+ # @return [Exists]
1842
+ def Exists(**args)
1843
+ Exists.new(**args)
1844
+ end
1845
+
1846
+ # Construct {Touch} options for {Collection#touch}
1847
+ #
1848
+ # @example Reset expiration timer for document to 30 seconds (and use custom operation timeout)
1849
+ # res = collection.touch("customer123", 30, Options::Touch(timeout: 3_000))
1850
+ #
1851
+ # @return [Touch]
1852
+ def Touch(**args)
1853
+ Touch.new(**args)
1854
+ end
1855
+
1856
+ # Construct {Unlock} options for {Collection#touch}
1857
+ #
1858
+ # @example Lock (pessimistically) and unlock document
1859
+ # res = collection.get_and_lock("customer123", 10, Options::Unlock(timeout: 3_000))
1860
+ # collection.unlock("customer123", res.cas)
1861
+ #
1862
+ # @return [Unlock]
1863
+ def Unlock(**args)
1864
+ Unlock.new(**args)
1865
+ end
1866
+
1867
+ # Construct {Remove} options for {Collection#remove}
1868
+ #
1869
+ # @example Remove the document in collection, but apply optimistic lock
1870
+ # res = collection.upsert("mydoc", {"foo" => 42})
1871
+ # res.cas #=> 7751414725654
1872
+ #
1873
+ # begin
1874
+ # res = collection.remove("customer123", Options::Remove(cas: 3735928559))
1875
+ # rescue Error::CasMismatch
1876
+ # puts "Failed to remove the document, it might be changed by other application"
1877
+ # end
1878
+ #
1879
+ # @return [Remove]
1880
+ def Remove(**args)
1881
+ Remove.new(**args)
1882
+ end
1883
+
1884
+ # Construct {RemoveMulti} options for {Collection#remove_multi}
1885
+ #
1886
+ # @example Remove two documents in collection. For "mydoc" apply optimistic lock
1887
+ # res = collection.upsert("mydoc", {"foo" => 42})
1888
+ # res.cas #=> 7751414725654
1889
+ #
1890
+ # res = collection.remove_multi(["foo", ["mydoc", res.cas]], Options::RemoveMulti(timeout: 3_000))
1891
+ # if res[1].error.is_a?(Error::CasMismatch)
1892
+ # puts "Failed to remove the document, it might be changed by other application"
1893
+ # end
1894
+ #
1895
+ # @return [RemoveMulti]
1896
+ def RemoveMulti(**args)
1897
+ RemoveMulti.new(**args)
1898
+ end
1899
+
1900
+ # Construct {Insert} options for {Collection#insert}
1901
+ #
1902
+ # @example Insert new document in collection
1903
+ # res = collection.insert("mydoc", {"foo" => 42}, Options::Insert(expiry: 20))
1904
+ # res.cas #=> 242287264414742
1905
+ #
1906
+ # @return [Insert]
1907
+ def Insert(**args)
1908
+ Insert.new(**args)
1909
+ end
1910
+
1911
+ # Construct {Upsert} options for {Collection#upsert}
1912
+ #
1913
+ # @example Upsert new document in collection
1914
+ # res = collection.upsert("mydoc", {"foo" => 42}, Options::Upsert(expiry: 20))
1915
+ # res.cas #=> 242287264414742
1916
+ #
1917
+ # @return [Upsert]
1918
+ def Upsert(**args)
1919
+ Upsert.new(**args)
1920
+ end
1921
+
1922
+ # Construct {UpsertMulti} options for {Collection#upsert_multi}
1923
+ #
1924
+ # @example Upsert two documents with IDs "foo" and "bar" into a collection with expiration 20 seconds.
1925
+ # res = collection.upsert_multi([
1926
+ # "foo", {"foo" => 42},
1927
+ # "bar", {"bar" => "some value"}
1928
+ # ], Options::UpsertMulti(expiry: 20))
1929
+ # res[0].cas #=> 7751414725654
1930
+ # res[1].cas #=> 7751418925851
1931
+ #
1932
+ # @return [UpsertMulti]
1933
+ def UpsertMulti(**args)
1934
+ UpsertMulti.new(**args)
1935
+ end
1936
+
1937
+ # Construct {Replace} options for {Collection#replace}
1938
+ #
1939
+ # @example Replace new document in collection with optimistic locking
1940
+ # res = collection.get("mydoc")
1941
+ # res = collection.replace("mydoc", {"foo" => 42}, Options::Replace(cas: res.cas))
1942
+ # res.cas #=> 242287264414742
1943
+ #
1944
+ # @return [Replace]
1945
+ def Replace(**args)
1946
+ Replace.new(**args)
1947
+ end
1948
+
1949
+ # Construct {MutateIn} options for {Collection#mutate_in}
1950
+ #
1951
+ # @example Append number into subarray of the document
1952
+ # mutation_specs = [
1953
+ # MutateInSpec::array_append("purchases.complete", [42])
1954
+ # ]
1955
+ # collection.mutate_in("customer123", mutation_specs, Options::MutateIn(expiry: 10))
1956
+ #
1957
+ # @return [MutateIn]
1958
+ def MutateIn(**args)
1959
+ MutateIn.new(**args)
1960
+ end
1961
+
1962
+ # Construct {LookupIn} options for {Collection#lookup_in}
1963
+ #
1964
+ # @example Get list of IDs of completed purchases
1965
+ # lookup_specs = [
1966
+ # LookupInSpec::get("purchases.complete")
1967
+ # ]
1968
+ # collection.lookup_in("customer123", lookup_specs, Options::LookupIn(timeout: 3_000))
1969
+ #
1970
+ # @return [LookupIn]
1971
+ def LookupIn(**args)
1972
+ LookupIn.new(**args)
1973
+ end
1974
+
1975
+ # Construct {Append} options for {BinaryCollection#append}
1976
+ #
1977
+ # @example Append "bar" to the content of the existing document
1978
+ # collection.upsert("mydoc", "foo")
1979
+ # collection.binary.append("mydoc", "bar", Options::Append(timeout: 3_000))
1980
+ # collection.get("mydoc", Options::Get(transcoder: nil)).content #=> "foobar"
1981
+ #
1982
+ # @return [Append]
1983
+ def Append(**args)
1984
+ Append.new(**args)
1985
+ end
1986
+
1987
+ # Construct {Prepend} options for {BinaryCollection#prepend}
1988
+ #
1989
+ # @example Prepend "bar" to the content of the existing document
1990
+ # collection.upsert("mydoc", "foo")
1991
+ # collection.binary.prepend("mydoc", "bar", Options::Prepend(timeout: 3_000))
1992
+ # collection.get("mydoc", Options::Get(transcoder: nil)).content #=> "barfoo"
1993
+ #
1994
+ # @return [Prepend]
1995
+ def Prepend(**args)
1996
+ Prepend.new(**args)
1997
+ end
1998
+
1999
+ # Construct {Diagnostics} options for {Cluster#diagnostics}
2000
+ #
2001
+ # @return [Diagnostics]
2002
+ def Diagnostics(**args)
2003
+ Diagnostics.new(**args)
2004
+ end
2005
+
2006
+ # Construct {Ping} options for {Bucket#ping}
2007
+ #
2008
+ # @return [Ping]
2009
+ def Ping(**args)
2010
+ Ping.new(**args)
2011
+ end
2012
+
2013
+ # Construct {Cluster} options for {Cluster.connect}
2014
+ #
2015
+ # @example Pass authenticator object to Options
2016
+ # Cluster.connect("couchbase://localhost",
2017
+ # Options::Cluster(authenticator: PasswordAuthenticator.new("Administrator", "password")))
2018
+ #
2019
+ # @example Shorter version, more useful for interactive sessions
2020
+ # Cluster.connect("couchbase://localhost", "Administrator", "password")
2021
+ #
2022
+ # @example Authentication with TLS client certificate (note +couchbases://+ schema)
2023
+ # Cluster.connect("couchbases://localhost?trust_certificate=/tmp/ca.pem",
2024
+ # Options::Cluster(authenticator: CertificateAuthenticator.new("/tmp/certificate.pem", "/tmp/private.key")))
2025
+ #
2026
+ # @see https://docs.couchbase.com/server/current/manage/manage-security/configure-client-certificates.html
2027
+ #
2028
+ # @return [Cluster]
2029
+ def Cluster(**args)
2030
+ Cluster.new(**args)
2031
+ end
2032
+
2033
+ # Construct {Increment} options for {BinaryCollection#increment}
2034
+ #
2035
+ # @example Increment value by 10, and initialize to 0 if it does not exist
2036
+ # res = collection.binary.increment("raw_counter", Options::Increment(delta: 10, initial: 0))
2037
+ # res.content #=> 0
2038
+ # res = collection.binary.increment("raw_counter", Options::Increment(delta: 10, initial: 0))
2039
+ # res.content #=> 10
2040
+ #
2041
+ # @return [Increment]
2042
+ def Increment(**args)
2043
+ Increment.new(**args)
2044
+ end
2045
+
2046
+ # Construct {Decrement} options for {BinaryCollection#decrement}
2047
+ #
2048
+ # @example Decrement value by 2, and initialize to 100 if it does not exist
2049
+ # res = collection.binary.decrement("raw_counter", Options::Decrement(delta: 2, initial: 100))
2050
+ # res.value #=> 100
2051
+ # res = collection.binary.decrement("raw_counter", Options::Decrement(delta: 2, initial: 100))
2052
+ # res.value #=> 98
2053
+ #
2054
+ # @return [Decrement]
2055
+ def Decrement(**args)
2056
+ Decrement.new(**args)
2057
+ end
2058
+
2059
+ # Construct {Analytics} options for {Cluster#analytics_query}
2060
+ #
2061
+ # @example Select name of the given user
2062
+ # cluster.analytics_query("SELECT u.name AS uname FROM GleambookUsers u WHERE u.id = $user_id ",
2063
+ # Options::Analytics(named_parameters: {user_id: 2}))
2064
+ #
2065
+ # @return [Analytics]
2066
+ def Analytics(**args)
2067
+ Analytics.new(**args)
2068
+ end
2069
+
2070
+ # Construct {Query} options for {Cluster#query}
2071
+ #
2072
+ # @example Select first ten hotels from travel sample dataset
2073
+ # cluster.query("SELECT * FROM `travel-sample` WHERE type = $type LIMIT 10",
2074
+ # Options::Query(named_parameters: {type: "hotel"}, metrics: true))
2075
+ #
2076
+ # @return [Query]
2077
+ def Query(**args)
2078
+ Query.new(**args)
2079
+ end
2080
+
2081
+ # Construct {Search} options for {Cluster#search_query}
2082
+ #
2083
+ # @example Return first 10 results of "hop beer" query and request highlighting
2084
+ # cluster.search_query("beer_index", Cluster::SearchQuery.match_phrase("hop beer"),
2085
+ # Options::Search(
2086
+ # limit: 10,
2087
+ # fields: %w[name],
2088
+ # highlight_style: :html,
2089
+ # highlight_fields: %w[name description]
2090
+ # ))
2091
+ #
2092
+ # @return [Search]
2093
+ def Search(**args)
2094
+ Search.new(**args)
2095
+ end
2096
+
2097
+ # Construct {View} options for {Bucket#view_query}
2098
+ #
2099
+ # @example Make sure the view engine catch up with all mutations and return keys starting from +["random_brewery:"]+
2100
+ # bucket.view_query("beer", "brewery_beers",
2101
+ # Options::View(
2102
+ # start_key: ["random_brewery:"],
2103
+ # scan_consistency: :request_plus
2104
+ # ))
2105
+ #
2106
+ # @return [View]
2107
+ def View(**args)
2108
+ View.new(**args)
2109
+ end
2110
+
2111
+ # rubocop:enable Naming/MethodName
2112
+ end
2113
+ end