couchbase 3.4.1 → 3.4.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (278) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/ext/couchbase/CMakeLists.txt +59 -7
  4. data/ext/couchbase/cmake/Documentation.cmake +0 -1
  5. data/ext/couchbase/cmake/OpenSSL.cmake +98 -3
  6. data/ext/couchbase/cmake/Testing.cmake +12 -4
  7. data/ext/couchbase/cmake/ThirdPartyDependencies.cmake +4 -0
  8. data/ext/couchbase/cmake/build_config.hxx.in +3 -0
  9. data/ext/couchbase/core/bucket.cxx +3 -2
  10. data/ext/couchbase/core/bucket.hxx +9 -0
  11. data/ext/couchbase/core/cluster.hxx +17 -0
  12. data/ext/couchbase/core/cluster_options.cxx +2 -2
  13. data/ext/couchbase/core/cluster_options.hxx +4 -7
  14. data/ext/couchbase/core/{config_profile.cxx → cluster_options_fwd.hxx} +7 -6
  15. data/ext/couchbase/core/config_profile.hxx +2 -65
  16. data/ext/couchbase/core/config_profiles.cxx +79 -0
  17. data/ext/couchbase/core/config_profiles.hxx +56 -0
  18. data/ext/couchbase/core/error_context/search.hxx +1 -1
  19. data/ext/couchbase/core/impl/analytics.cxx +237 -0
  20. data/ext/couchbase/core/impl/boolean_field_query.cxx +40 -0
  21. data/ext/couchbase/core/impl/boolean_query.cxx +62 -0
  22. data/ext/couchbase/core/impl/cluster.cxx +2 -1
  23. data/ext/couchbase/core/impl/conjunction_query.cxx +51 -0
  24. data/ext/couchbase/core/impl/date_range.cxx +89 -0
  25. data/ext/couchbase/core/impl/date_range_facet.cxx +54 -0
  26. data/ext/couchbase/core/impl/date_range_facet_result.cxx +64 -0
  27. data/ext/couchbase/core/impl/date_range_query.cxx +125 -0
  28. data/ext/couchbase/core/impl/disjunction_query.cxx +51 -0
  29. data/ext/couchbase/core/impl/dns_srv_tracker.cxx +5 -3
  30. data/ext/couchbase/core/impl/encoded_search_facet.hxx +29 -0
  31. data/ext/couchbase/core/impl/encoded_search_query.hxx +29 -0
  32. data/ext/couchbase/core/impl/encoded_search_sort.hxx +29 -0
  33. data/ext/couchbase/core/impl/geo_bounding_box_query.cxx +46 -0
  34. data/ext/couchbase/core/impl/geo_distance_query.cxx +43 -0
  35. data/ext/couchbase/core/impl/geo_polygon_query.cxx +46 -0
  36. data/ext/couchbase/core/impl/internal_date_range_facet_result.cxx +80 -0
  37. data/ext/couchbase/core/impl/internal_date_range_facet_result.hxx +48 -0
  38. data/ext/couchbase/core/impl/internal_numeric_range_facet_result.cxx +80 -0
  39. data/ext/couchbase/core/impl/internal_numeric_range_facet_result.hxx +48 -0
  40. data/ext/couchbase/core/impl/internal_search_error_context.cxx +141 -0
  41. data/ext/couchbase/core/impl/internal_search_error_context.hxx +61 -0
  42. data/ext/couchbase/core/impl/internal_search_meta_data.cxx +60 -0
  43. data/ext/couchbase/core/impl/internal_search_meta_data.hxx +41 -0
  44. data/ext/couchbase/core/impl/internal_search_result.cxx +84 -0
  45. data/ext/couchbase/core/impl/internal_search_result.hxx +43 -0
  46. data/ext/couchbase/core/impl/internal_search_row.cxx +82 -0
  47. data/ext/couchbase/core/impl/internal_search_row.hxx +56 -0
  48. data/ext/couchbase/core/impl/internal_search_row_location.hxx +32 -0
  49. data/ext/couchbase/core/impl/internal_search_row_locations.cxx +137 -0
  50. data/ext/couchbase/core/impl/internal_search_row_locations.hxx +45 -0
  51. data/ext/couchbase/core/impl/internal_term_facet_result.cxx +80 -0
  52. data/ext/couchbase/core/impl/internal_term_facet_result.hxx +48 -0
  53. data/ext/couchbase/core/impl/match_all_query.cxx +35 -0
  54. data/ext/couchbase/core/impl/match_none_query.cxx +35 -0
  55. data/ext/couchbase/core/impl/match_phrase_query.cxx +43 -0
  56. data/ext/couchbase/core/impl/match_query.cxx +59 -0
  57. data/ext/couchbase/core/impl/numeric_range.cxx +49 -0
  58. data/ext/couchbase/core/impl/numeric_range_facet.cxx +54 -0
  59. data/ext/couchbase/core/impl/numeric_range_facet_result.cxx +64 -0
  60. data/ext/couchbase/core/impl/numeric_range_query.cxx +56 -0
  61. data/ext/couchbase/core/impl/phrase_query.cxx +42 -0
  62. data/ext/couchbase/core/impl/prefix_query.cxx +40 -0
  63. data/ext/couchbase/core/impl/query.cxx +5 -5
  64. data/ext/couchbase/core/impl/query_string_query.cxx +37 -0
  65. data/ext/couchbase/core/impl/regexp_query.cxx +40 -0
  66. data/ext/couchbase/core/impl/search.cxx +191 -0
  67. data/ext/couchbase/core/impl/search_error_context.cxx +147 -0
  68. data/ext/couchbase/core/impl/search_meta_data.cxx +46 -0
  69. data/ext/couchbase/core/impl/search_result.cxx +66 -0
  70. data/ext/couchbase/core/impl/search_row.cxx +74 -0
  71. data/ext/couchbase/core/impl/search_row_location.cxx +64 -0
  72. data/ext/couchbase/core/impl/search_row_locations.cxx +66 -0
  73. data/ext/couchbase/core/impl/search_sort_field.cxx +104 -0
  74. data/ext/couchbase/core/impl/search_sort_id.cxx +43 -0
  75. data/ext/couchbase/core/impl/search_sort_score.cxx +43 -0
  76. data/ext/couchbase/core/impl/term_facet.cxx +36 -0
  77. data/ext/couchbase/core/impl/term_facet_result.cxx +64 -0
  78. data/ext/couchbase/core/impl/term_query.cxx +56 -0
  79. data/ext/couchbase/core/impl/term_range_query.cxx +57 -0
  80. data/ext/couchbase/core/impl/wildcard_query.cxx +40 -0
  81. data/ext/couchbase/core/io/dns_client.cxx +225 -0
  82. data/ext/couchbase/core/io/dns_client.hxx +19 -188
  83. data/ext/couchbase/core/io/http_context.hxx +1 -1
  84. data/ext/couchbase/core/io/http_session.hxx +10 -0
  85. data/ext/couchbase/core/io/http_session_manager.hxx +5 -3
  86. data/ext/couchbase/core/io/mcbp_session.cxx +28 -1
  87. data/ext/couchbase/core/io/retry_orchestrator.hxx +3 -2
  88. data/ext/couchbase/core/json_string.hxx +5 -0
  89. data/ext/couchbase/core/meta/version.cxx +18 -4
  90. data/ext/couchbase/core/mozilla_ca_bundle.hxx +39 -0
  91. data/ext/couchbase/core/operations/document_analytics.cxx +1 -0
  92. data/ext/couchbase/core/operations/document_analytics.hxx +1 -0
  93. data/ext/couchbase/core/operations/document_append.hxx +1 -1
  94. data/ext/couchbase/core/operations/document_decrement.hxx +1 -1
  95. data/ext/couchbase/core/operations/document_exists.hxx +1 -1
  96. data/ext/couchbase/core/operations/document_get.hxx +1 -1
  97. data/ext/couchbase/core/operations/document_get_and_lock.hxx +1 -1
  98. data/ext/couchbase/core/operations/document_get_and_touch.hxx +1 -1
  99. data/ext/couchbase/core/operations/document_get_projected.hxx +1 -1
  100. data/ext/couchbase/core/operations/document_increment.hxx +1 -1
  101. data/ext/couchbase/core/operations/document_insert.hxx +1 -1
  102. data/ext/couchbase/core/operations/document_lookup_in.hxx +1 -1
  103. data/ext/couchbase/core/operations/document_mutate_in.hxx +1 -1
  104. data/ext/couchbase/core/operations/document_prepend.hxx +1 -1
  105. data/ext/couchbase/core/operations/document_query.cxx +2 -0
  106. data/ext/couchbase/core/operations/document_query.hxx +6 -0
  107. data/ext/couchbase/core/operations/document_remove.hxx +1 -1
  108. data/ext/couchbase/core/operations/document_replace.hxx +1 -1
  109. data/ext/couchbase/core/operations/document_search.cxx +4 -1
  110. data/ext/couchbase/core/operations/document_search.hxx +2 -1
  111. data/ext/couchbase/core/operations/document_touch.hxx +1 -1
  112. data/ext/couchbase/core/operations/document_unlock.hxx +1 -1
  113. data/ext/couchbase/core/operations/document_upsert.hxx +1 -1
  114. data/ext/couchbase/core/operations/document_view.hxx +1 -0
  115. data/ext/couchbase/core/protocol/client_request.hxx +11 -2
  116. data/ext/couchbase/core/public_fwd.hxx +21 -0
  117. data/ext/couchbase/core/tls_verify_mode.hxx +26 -0
  118. data/ext/couchbase/core/topology/configuration.cxx +15 -2
  119. data/ext/couchbase/core/topology/configuration.hxx +5 -1
  120. data/ext/couchbase/core/transactions/active_transaction_record.hxx +2 -2
  121. data/ext/couchbase/core/transactions/attempt_context_impl.cxx +3 -0
  122. data/ext/couchbase/core/transactions/attempt_context_impl.hxx +1 -1
  123. data/ext/couchbase/core/transactions/attempt_context_testing_hooks.cxx +93 -0
  124. data/ext/couchbase/core/transactions/attempt_context_testing_hooks.hxx +48 -75
  125. data/ext/couchbase/core/transactions/cleanup_testing_hooks.cxx +52 -0
  126. data/ext/couchbase/core/transactions/cleanup_testing_hooks.hxx +17 -31
  127. data/ext/couchbase/core/transactions/exceptions.hxx +12 -9
  128. data/ext/couchbase/core/transactions/internal/transaction_context.hxx +12 -12
  129. data/ext/couchbase/core/transactions/internal/transactions_cleanup.hxx +7 -1
  130. data/ext/couchbase/core/transactions/transaction_context.cxx +1 -0
  131. data/ext/couchbase/core/transactions/transactions_cleanup.cxx +144 -155
  132. data/ext/couchbase/core/utils/connection_string.cxx +27 -3
  133. data/ext/couchbase/core/utils/connection_string.hxx +3 -3
  134. data/ext/couchbase/core/utils/json.cxx +4 -1
  135. data/ext/couchbase/couchbase/analytics_error_context.hxx +143 -0
  136. data/ext/couchbase/couchbase/analytics_meta_data.hxx +155 -0
  137. data/ext/couchbase/couchbase/analytics_metrics.hxx +163 -0
  138. data/ext/couchbase/couchbase/analytics_options.hxx +359 -0
  139. data/ext/couchbase/couchbase/analytics_result.hxx +102 -0
  140. data/ext/couchbase/couchbase/analytics_scan_consistency.hxx +46 -0
  141. data/ext/couchbase/couchbase/analytics_status.hxx +41 -0
  142. data/ext/couchbase/couchbase/analytics_warning.hxx +85 -0
  143. data/ext/couchbase/couchbase/behavior_options.hxx +10 -1
  144. data/ext/couchbase/couchbase/boolean_field_query.hxx +77 -0
  145. data/ext/couchbase/couchbase/boolean_query.hxx +223 -0
  146. data/ext/couchbase/couchbase/cluster.hxx +75 -1
  147. data/ext/couchbase/couchbase/conjunction_query.hxx +88 -0
  148. data/ext/couchbase/couchbase/date_range.hxx +69 -0
  149. data/ext/couchbase/couchbase/date_range_facet.hxx +56 -0
  150. data/ext/couchbase/couchbase/date_range_facet_result.hxx +55 -0
  151. data/ext/couchbase/couchbase/date_range_query.hxx +265 -0
  152. data/ext/couchbase/couchbase/disjunction_query.hxx +109 -0
  153. data/ext/couchbase/couchbase/doc_id_query.hxx +111 -0
  154. data/ext/couchbase/couchbase/error_context.hxx +7 -6
  155. data/ext/couchbase/couchbase/fmt/analytics_scan_consistency.hxx +52 -0
  156. data/ext/couchbase/couchbase/fmt/analytics_status.hxx +76 -0
  157. data/ext/couchbase/couchbase/fmt/search_scan_consistency.hxx +49 -0
  158. data/ext/couchbase/couchbase/geo_bounding_box_query.hxx +107 -0
  159. data/ext/couchbase/couchbase/geo_distance_query.hxx +109 -0
  160. data/ext/couchbase/couchbase/geo_point.hxx +32 -0
  161. data/ext/couchbase/couchbase/geo_polygon_query.hxx +85 -0
  162. data/ext/couchbase/couchbase/highlight_style.hxx +45 -0
  163. data/ext/couchbase/couchbase/match_all_query.hxx +43 -0
  164. data/ext/couchbase/couchbase/match_none_query.hxx +43 -0
  165. data/ext/couchbase/couchbase/match_operator.hxx +45 -0
  166. data/ext/couchbase/couchbase/match_phrase_query.hxx +108 -0
  167. data/ext/couchbase/couchbase/match_query.hxx +163 -0
  168. data/ext/couchbase/couchbase/numeric_range.hxx +58 -0
  169. data/ext/couchbase/couchbase/numeric_range_facet.hxx +56 -0
  170. data/ext/couchbase/couchbase/numeric_range_facet_result.hxx +55 -0
  171. data/ext/couchbase/couchbase/numeric_range_query.hxx +143 -0
  172. data/ext/couchbase/couchbase/phrase_query.hxx +93 -0
  173. data/ext/couchbase/couchbase/prefix_query.hxx +82 -0
  174. data/ext/couchbase/couchbase/query_options.hxx +0 -1
  175. data/ext/couchbase/couchbase/query_string_query.hxx +72 -0
  176. data/ext/couchbase/couchbase/regexp_query.hxx +82 -0
  177. data/ext/couchbase/couchbase/scope.hxx +73 -0
  178. data/ext/couchbase/couchbase/search_date_range.hxx +68 -0
  179. data/ext/couchbase/couchbase/search_error_context.hxx +138 -0
  180. data/ext/couchbase/couchbase/search_facet.hxx +60 -0
  181. data/ext/couchbase/couchbase/search_facet_result.hxx +50 -0
  182. data/ext/couchbase/couchbase/search_meta_data.hxx +85 -0
  183. data/ext/couchbase/couchbase/search_metrics.hxx +127 -0
  184. data/ext/couchbase/couchbase/search_numeric_range.hxx +69 -0
  185. data/ext/couchbase/couchbase/search_options.hxx +509 -0
  186. data/ext/couchbase/couchbase/search_query.hxx +69 -0
  187. data/ext/couchbase/couchbase/search_result.hxx +77 -0
  188. data/ext/couchbase/couchbase/search_row.hxx +104 -0
  189. data/ext/couchbase/couchbase/search_row_location.hxx +55 -0
  190. data/ext/couchbase/couchbase/search_row_locations.hxx +86 -0
  191. data/ext/couchbase/couchbase/search_scan_consistency.hxx +34 -0
  192. data/ext/couchbase/couchbase/search_sort.hxx +58 -0
  193. data/ext/couchbase/couchbase/search_sort_field.hxx +117 -0
  194. data/ext/couchbase/couchbase/search_sort_field_missing.hxx +26 -0
  195. data/ext/couchbase/couchbase/search_sort_field_mode.hxx +27 -0
  196. data/ext/couchbase/couchbase/search_sort_field_type.hxx +28 -0
  197. data/ext/couchbase/couchbase/search_sort_id.hxx +60 -0
  198. data/ext/couchbase/couchbase/search_sort_score.hxx +60 -0
  199. data/ext/couchbase/couchbase/search_term_range.hxx +51 -0
  200. data/ext/couchbase/couchbase/security_options.hxx +3 -0
  201. data/ext/couchbase/couchbase/term_facet.hxx +48 -0
  202. data/ext/couchbase/couchbase/term_facet_result.hxx +55 -0
  203. data/ext/couchbase/couchbase/term_query.hxx +151 -0
  204. data/ext/couchbase/couchbase/term_range_query.hxx +142 -0
  205. data/ext/couchbase/couchbase/tracing/request_span.hxx +63 -0
  206. data/ext/couchbase/couchbase/tracing/request_tracer.hxx +2 -40
  207. data/ext/couchbase/couchbase/transactions/async_attempt_context.hxx +83 -4
  208. data/ext/couchbase/couchbase/transactions/attempt_context.hxx +68 -1
  209. data/ext/couchbase/couchbase/transactions/transaction_get_result.hxx +2 -0
  210. data/ext/couchbase/couchbase/transactions/transaction_keyspace.hxx +11 -1
  211. data/ext/couchbase/couchbase/transactions/transaction_options.hxx +79 -8
  212. data/ext/couchbase/couchbase/transactions/transaction_query_options.hxx +128 -15
  213. data/ext/couchbase/couchbase/transactions/transaction_query_result.hxx +4 -0
  214. data/ext/couchbase/couchbase/transactions/transaction_result.hxx +1 -1
  215. data/ext/couchbase/couchbase/transactions/transactions_cleanup_config.hxx +5 -3
  216. data/ext/couchbase/couchbase/transactions/transactions_config.hxx +9 -5
  217. data/ext/couchbase/couchbase/transactions/transactions_query_config.hxx +6 -3
  218. data/ext/couchbase/couchbase/transactions.hxx +34 -1
  219. data/ext/couchbase/couchbase/wildcard_query.hxx +83 -0
  220. data/ext/couchbase/test/CMakeLists.txt +8 -7
  221. data/ext/couchbase/test/benchmark_helper_integration.hxx +2 -2
  222. data/ext/couchbase/test/test_helper.hxx +6 -6
  223. data/ext/couchbase/test/test_integration_analytics.cxx +314 -16
  224. data/ext/couchbase/test/test_integration_collections.cxx +7 -3
  225. data/ext/couchbase/test/test_integration_connect.cxx +7 -3
  226. data/ext/couchbase/test/test_integration_crud.cxx +19 -2
  227. data/ext/couchbase/test/test_integration_diagnostics.cxx +11 -5
  228. data/ext/couchbase/test/test_integration_durability.cxx +12 -7
  229. data/ext/couchbase/test/test_integration_examples.cxx +324 -11
  230. data/ext/couchbase/test/test_integration_management.cxx +162 -94
  231. data/ext/couchbase/test/test_integration_query.cxx +68 -10
  232. data/ext/couchbase/test/test_integration_range_scan.cxx +12 -12
  233. data/ext/couchbase/test/test_integration_read_replica.cxx +48 -11
  234. data/ext/couchbase/test/test_integration_search.cxx +621 -0
  235. data/ext/couchbase/test/test_integration_subdoc.cxx +62 -11
  236. data/ext/couchbase/test/test_integration_tracer.cxx +5 -0
  237. data/ext/couchbase/test/test_integration_transcoders.cxx +13 -5
  238. data/ext/couchbase/test/{test_transaction_transaction_context.cxx → test_transaction_context.cxx} +1 -1
  239. data/ext/couchbase/test/test_transaction_examples.cxx +195 -0
  240. data/ext/couchbase/test/{test_transaction_transaction_simple.cxx → test_transaction_simple.cxx} +90 -5
  241. data/ext/couchbase/test/{test_transaction_transaction_simple_async.cxx → test_transaction_simple_async.cxx} +19 -21
  242. data/ext/couchbase/test/test_unit_config_profiles.cxx +13 -13
  243. data/ext/couchbase/test/test_unit_connection_string.cxx +35 -0
  244. data/ext/couchbase/test/test_unit_json_transcoder.cxx +4 -0
  245. data/ext/couchbase/test/test_unit_search.cxx +427 -0
  246. data/ext/couchbase/test/test_unit_transaction_utils.cxx +10 -1
  247. data/ext/couchbase/test/test_unit_utils.cxx +8 -4
  248. data/ext/couchbase/third_party/snappy/CMakeLists.txt +150 -27
  249. data/ext/couchbase/third_party/snappy/cmake/config.h.in +28 -24
  250. data/ext/couchbase/third_party/snappy/snappy-internal.h +189 -25
  251. data/ext/couchbase/third_party/snappy/snappy-sinksource.cc +26 -9
  252. data/ext/couchbase/third_party/snappy/snappy-sinksource.h +11 -11
  253. data/ext/couchbase/third_party/snappy/snappy-stubs-internal.cc +1 -1
  254. data/ext/couchbase/third_party/snappy/snappy-stubs-internal.h +227 -308
  255. data/ext/couchbase/third_party/snappy/snappy-stubs-public.h.in +0 -11
  256. data/ext/couchbase/third_party/snappy/snappy.cc +1176 -410
  257. data/ext/couchbase/third_party/snappy/snappy.h +19 -4
  258. data/ext/couchbase.cxx +85 -22
  259. data/ext/revisions.rb +3 -3
  260. data/lib/couchbase/authenticator.rb +0 -1
  261. data/lib/couchbase/cluster.rb +13 -13
  262. data/lib/couchbase/cluster_registry.rb +7 -2
  263. data/lib/couchbase/config_profiles.rb +1 -1
  264. data/lib/couchbase/configuration.rb +3 -4
  265. data/lib/couchbase/json_transcoder.rb +12 -5
  266. data/lib/couchbase/management/collection_query_index_manager.rb +54 -15
  267. data/lib/couchbase/management/query_index_manager.rb +70 -5
  268. data/lib/couchbase/options.rb +85 -2
  269. data/lib/couchbase/raw_binary_transcoder.rb +37 -0
  270. data/lib/couchbase/raw_json_transcoder.rb +38 -0
  271. data/lib/couchbase/raw_string_transcoder.rb +40 -0
  272. data/lib/couchbase/search_options.rb +163 -240
  273. data/lib/couchbase/transcoder_flags.rb +62 -0
  274. data/lib/couchbase/version.rb +1 -1
  275. metadata +151 -12
  276. data/ext/couchbase/core/CMakeLists.txt +0 -0
  277. /data/ext/couchbase/test/{test_transaction_transaction_public_async_api.cxx → test_transaction_public_async_api.cxx} +0 -0
  278. /data/ext/couchbase/test/{test_transaction_transaction_public_blocking_api.cxx → test_transaction_public_blocking_api.cxx} +0 -0
@@ -25,6 +25,16 @@ module Couchbase
25
25
  MatchQuery.new(match, &block)
26
26
  end
27
27
 
28
+ # @return [Hash<Symbol, #to_json>]
29
+ def to_h
30
+ {}
31
+ end
32
+
33
+ # @return [String]
34
+ def to_json(*args)
35
+ to_h.to_json(*args)
36
+ end
37
+
28
38
  # A match query analyzes the input text and uses that analyzed text to query the index.
29
39
  class MatchQuery < SearchQuery
30
40
  # @return [Float]
@@ -53,17 +63,16 @@ module Couchbase
53
63
  yield self if block_given?
54
64
  end
55
65
 
56
- # @return [String]
57
- def to_json(*args)
58
- data = {"match" => @match}
59
- data["boost"] = boost if boost
60
- data["field"] = field if field
61
- data["analyzer"] = analyzer if analyzer
62
- if fuzziness
63
- data["fuzziness"] = fuzziness
64
- data["prefix_length"] = prefix_length if prefix_length
65
- end
66
- data.to_json(*args)
66
+ # @return [Hash<Symbol, #to_json>]
67
+ def to_h
68
+ data = {:match => @match}
69
+ data[:boost] = boost if boost
70
+ data[:field] = field if field
71
+ data[:analyzer] = analyzer if analyzer
72
+ data[:operator] = operator if operator
73
+ data[:fuzziness] = fuzziness if fuzziness
74
+ data[:prefix_length] = prefix_length if prefix_length
75
+ data
67
76
  end
68
77
  end
69
78
 
@@ -82,9 +91,6 @@ module Couchbase
82
91
  # @return [Float]
83
92
  attr_accessor :boost
84
93
 
85
- # @return [nil, :or, :and]
86
- attr_accessor :operator
87
-
88
94
  # @return [String]
89
95
  attr_accessor :field
90
96
 
@@ -100,14 +106,14 @@ module Couchbase
100
106
  yield self if block_given?
101
107
  end
102
108
 
103
- # @return [String]
104
- def to_json(*args)
105
- data = {"match_phrase" => @match_phrase}
106
- data["boost"] = boost if boost
107
- data["operator"] = operator.to_s if operator
108
- data["field"] = field if field
109
- data["analyzer"] = analyzer if analyzer
110
- data.to_json(*args)
109
+ # @return [Hash<Symbol, #to_json>]
110
+ def to_h
111
+ data = {:match_phrase => @match_phrase}
112
+ data[:boost] = boost if boost
113
+ data[:operator] = operator.to_s if operator
114
+ data[:field] = field if field
115
+ data[:analyzer] = analyzer if analyzer
116
+ data
111
117
  end
112
118
  end
113
119
 
@@ -126,9 +132,6 @@ module Couchbase
126
132
  # @return [Float]
127
133
  attr_accessor :boost
128
134
 
129
- # @return [nil, :or, :and]
130
- attr_accessor :operator
131
-
132
135
  # @return [String]
133
136
  attr_accessor :field
134
137
 
@@ -141,13 +144,12 @@ module Couchbase
141
144
  yield self if block_given?
142
145
  end
143
146
 
144
- # @return [String]
145
- def to_json(*args)
146
- data = {"regexp" => @regexp}
147
- data["boost"] = boost if boost
148
- data["operator"] = operator.to_s if operator
149
- data["field"] = field if field
150
- data.to_json(*args)
147
+ # @return [Hash<Symbol, #to_json>]
148
+ def to_h
149
+ data = {:regexp => @regexp}
150
+ data[:boost] = boost if boost
151
+ data[:field] = field if field
152
+ data
151
153
  end
152
154
  end
153
155
 
@@ -166,9 +168,6 @@ module Couchbase
166
168
  # @return [Float]
167
169
  attr_accessor :boost
168
170
 
169
- # @return [nil, :or, :and]
170
- attr_accessor :operator
171
-
172
171
  # @param [String] query_string
173
172
  #
174
173
  # @yieldparam [QueryStringQuery] self
@@ -178,12 +177,11 @@ module Couchbase
178
177
  yield self if block_given?
179
178
  end
180
179
 
181
- # @return [String]
182
- def to_json(*args)
183
- data = {"query" => @query_string}
184
- data["boost"] = boost if boost
185
- data["operator"] = operator.to_s if operator
186
- data.to_json(*args)
180
+ # @return [Hash<Symbol, #to_json>]
181
+ def to_h
182
+ data = {:query => @query_string}
183
+ data[:boost] = boost if boost
184
+ data
187
185
  end
188
186
  end
189
187
 
@@ -202,9 +200,6 @@ module Couchbase
202
200
  # @return [Float]
203
201
  attr_accessor :boost
204
202
 
205
- # @return [nil, :or, :and]
206
- attr_accessor :operator
207
-
208
203
  # @return [String]
209
204
  attr_accessor :field
210
205
 
@@ -217,13 +212,12 @@ module Couchbase
217
212
  yield self if block_given?
218
213
  end
219
214
 
220
- # @return [String]
221
- def to_json(*args)
222
- data = {"wildcard" => @wildcard}
223
- data["boost"] = boost if boost
224
- data["operator"] = operator.to_s if operator
225
- data["field"] = field if field
226
- data.to_json(*args)
215
+ # @return [Hash<Symbol, #to_json>]
216
+ def to_h
217
+ data = {:wildcard => @wildcard}
218
+ data[:boost] = boost if boost
219
+ data[:field] = field if field
220
+ data
227
221
  end
228
222
  end
229
223
 
@@ -242,12 +236,6 @@ module Couchbase
242
236
  # @return [Float]
243
237
  attr_accessor :boost
244
238
 
245
- # @return [nil, :or, :and]
246
- attr_accessor :operator
247
-
248
- # @return [String]
249
- attr_accessor :field
250
-
251
239
  # @param [String...] doc_ids
252
240
  #
253
241
  # @yieldparam [DocIdQuery] self
@@ -257,13 +245,11 @@ module Couchbase
257
245
  yield self if block_given?
258
246
  end
259
247
 
260
- # @return [String]
261
- def to_json(*args)
262
- data = {"doc_ids" => @doc_ids.flatten.uniq}
263
- data["boost"] = boost if boost
264
- data["operator"] = operator.to_s if operator
265
- data["field"] = field if field
266
- data.to_json(*args)
248
+ # @return [Hash<Symbol, #to_json>]
249
+ def to_h
250
+ data = {:ids => @doc_ids.flatten.uniq}
251
+ data[:boost] = boost if boost
252
+ data
267
253
  end
268
254
  end
269
255
 
@@ -282,9 +268,6 @@ module Couchbase
282
268
  # @return [Float]
283
269
  attr_accessor :boost
284
270
 
285
- # @return [nil, :or, :and]
286
- attr_accessor :operator
287
-
288
271
  # @return [String]
289
272
  attr_accessor :field
290
273
 
@@ -297,13 +280,12 @@ module Couchbase
297
280
  yield self if block_given?
298
281
  end
299
282
 
300
- # @return [String]
301
- def to_json(*args)
302
- data = {"bool" => @value}
303
- data["boost"] = boost if boost
304
- data["operator"] = operator.to_s if operator
305
- data["field"] = field if field
306
- data.to_json(*args)
283
+ # @return [Hash<Symbol, #to_json>]
284
+ def to_h
285
+ data = {:bool => @value}
286
+ data[:boost] = boost if boost
287
+ data[:field] = field if field
288
+ data
307
289
  end
308
290
  end
309
291
 
@@ -321,9 +303,6 @@ module Couchbase
321
303
  # @return [Float]
322
304
  attr_accessor :boost
323
305
 
324
- # @return [nil, :or, :and]
325
- attr_accessor :operator
326
-
327
306
  # @return [String]
328
307
  attr_accessor :field
329
308
 
@@ -365,32 +344,31 @@ module Couchbase
365
344
 
366
345
  DATE_FORMAT_RFC3339 = "%Y-%m-%dT%H:%M:%S%:z".freeze
367
346
 
368
- # @return [String]
369
- def to_json(*args)
347
+ # @return [Hash<Symbol, #to_json>]
348
+ def to_h
370
349
  raise ArgumentError, "either start_time or end_time must be set for DateRangeQuery" if @start_time.nil? && @end_time.nil?
371
350
 
372
351
  data = {}
373
- data["boost"] = boost if boost
374
- data["operator"] = operator.to_s if operator
375
- data["field"] = field if field
376
- data["datetime_parser"] = date_time_parser if date_time_parser
352
+ data[:boost] = boost if boost
353
+ data[:field] = field if field
354
+ data[:datetime_parser] = date_time_parser if date_time_parser
377
355
  if @start_time
378
- data["start"] = if @start_time.respond_to?(:strftime)
379
- @start_time.strftime(DATE_FORMAT_RFC3339)
380
- else
381
- @start_time
382
- end
383
- data["inclusive_start"] = @start_inclusive unless @start_inclusive.nil?
356
+ data[:start] = if @start_time.respond_to?(:strftime)
357
+ @start_time.strftime(DATE_FORMAT_RFC3339)
358
+ else
359
+ @start_time
360
+ end
361
+ data[:inclusive_start] = @start_inclusive unless @start_inclusive.nil?
384
362
  end
385
363
  if @end_time
386
- data["end"] = if @end_time.respond_to?(:strftime)
387
- @end_time.strftime(DATE_FORMAT_RFC3339)
388
- else
389
- @end_time
390
- end
391
- data["inclusive_end"] = @end_inclusive unless @end_inclusive.nil?
364
+ data[:end] = if @end_time.respond_to?(:strftime)
365
+ @end_time.strftime(DATE_FORMAT_RFC3339)
366
+ else
367
+ @end_time
368
+ end
369
+ data[:inclusive_end] = @end_inclusive unless @end_inclusive.nil?
392
370
  end
393
- data.to_json(*args)
371
+ data
394
372
  end
395
373
  end
396
374
 
@@ -408,9 +386,6 @@ module Couchbase
408
386
  # @return [Float]
409
387
  attr_accessor :boost
410
388
 
411
- # @return [nil, :or, :and]
412
- attr_accessor :operator
413
-
414
389
  # @return [String]
415
390
  attr_accessor :field
416
391
 
@@ -446,23 +421,22 @@ module Couchbase
446
421
  yield self if block_given?
447
422
  end
448
423
 
449
- # @return [String]
450
- def to_json(*args)
424
+ # @return [Hash<Symbol, #to_json>]
425
+ def to_h
451
426
  raise ArgumentError, "either min or max must be set for NumericRangeQuery" if @min.nil? && @max.nil?
452
427
 
453
428
  data = {}
454
- data["boost"] = boost if boost
455
- data["operator"] = operator.to_s if operator
456
- data["field"] = field if field
429
+ data[:boost] = boost if boost
430
+ data[:field] = field if field
457
431
  if @min
458
- data["min"] = @min
459
- data["inclusive_min"] = @min_inclusive unless @min_inclusive.nil?
432
+ data[:min] = @min
433
+ data[:inclusive_min] = @min_inclusive unless @min_inclusive.nil?
460
434
  end
461
435
  if @max
462
- data["max"] = @max
463
- data["inclusive_max"] = @max_inclusive unless @max_inclusive.nil?
436
+ data[:max] = @max
437
+ data[:inclusive_max] = @max_inclusive unless @max_inclusive.nil?
464
438
  end
465
- data.to_json(*args)
439
+ data
466
440
  end
467
441
  end
468
442
 
@@ -480,9 +454,6 @@ module Couchbase
480
454
  # @return [Float]
481
455
  attr_accessor :boost
482
456
 
483
- # @return [nil, :or, :and]
484
- attr_accessor :operator
485
-
486
457
  # @return [String]
487
458
  attr_accessor :field
488
459
 
@@ -518,23 +489,22 @@ module Couchbase
518
489
  yield self if block_given?
519
490
  end
520
491
 
521
- # @return [String]
522
- def to_json(*args)
492
+ # @return [Hash<Symbol, #to_json>]
493
+ def to_h
523
494
  raise ArgumentError, "either min or max must be set for TermRangeQuery" if @min.nil? && @max.nil?
524
495
 
525
496
  data = {}
526
- data["boost"] = boost if boost
527
- data["operator"] = operator.to_s if operator
528
- data["field"] = field if field
497
+ data[:boost] = boost if boost
498
+ data[:field] = field if field
529
499
  if @min
530
- data["min"] = @min
531
- data["inclusive_min"] = @min_inclusive unless @min_inclusive.nil?
500
+ data[:min] = @min
501
+ data[:inclusive_min] = @min_inclusive unless @min_inclusive.nil?
532
502
  end
533
503
  if @max
534
- data["max"] = @max
535
- data["inclusive_max"] = @max_inclusive unless @max_inclusive.nil?
504
+ data[:max] = @max
505
+ data[:inclusive_max] = @max_inclusive unless @max_inclusive.nil?
536
506
  end
537
- data.to_json(*args)
507
+ data
538
508
  end
539
509
  end
540
510
 
@@ -556,9 +526,6 @@ module Couchbase
556
526
  # @return [Float]
557
527
  attr_accessor :boost
558
528
 
559
- # @return [nil, :or, :and]
560
- attr_accessor :operator
561
-
562
529
  # @return [String]
563
530
  attr_accessor :field
564
531
 
@@ -574,16 +541,15 @@ module Couchbase
574
541
  yield self if block_given?
575
542
  end
576
543
 
577
- # @return [String]
578
- def to_json(*args)
544
+ # @return [Hash<Symbol, #to_json>]
545
+ def to_h
579
546
  data = {
580
- "location" => [@longitude, @latitude],
581
- "distance" => @distance,
547
+ :location => [@longitude, @latitude],
548
+ :distance => @distance,
582
549
  }
583
- data["boost"] = boost if boost
584
- data["operator"] = operator.to_s if operator
585
- data["field"] = field if field
586
- data.to_json(*args)
550
+ data[:boost] = boost if boost
551
+ data[:field] = field if field
552
+ data
587
553
  end
588
554
  end
589
555
 
@@ -606,9 +572,6 @@ module Couchbase
606
572
  # @return [Float]
607
573
  attr_accessor :boost
608
574
 
609
- # @return [nil, :or, :and]
610
- attr_accessor :operator
611
-
612
575
  # @return [String]
613
576
  attr_accessor :field
614
577
 
@@ -627,16 +590,15 @@ module Couchbase
627
590
  yield self if block_given?
628
591
  end
629
592
 
630
- # @return [String]
631
- def to_json(*args)
593
+ # @return [Hash<Symbol, #to_json>]
594
+ def to_h
632
595
  data = {
633
- "top_left" => [@top_left_longitude, @top_left_latitude],
634
- "bottom_right" => [@bottom_right_longitude, @bottom_right_latitude],
596
+ :top_left => [@top_left_longitude, @top_left_latitude],
597
+ :bottom_right => [@bottom_right_longitude, @bottom_right_latitude],
635
598
  }
636
- data["boost"] = boost if boost
637
- data["operator"] = operator.to_s if operator
638
- data["field"] = field if field
639
- data.to_json(*args)
599
+ data[:boost] = boost if boost
600
+ data[:field] = field if field
601
+ data
640
602
  end
641
603
  end
642
604
 
@@ -675,9 +637,6 @@ module Couchbase
675
637
  # @return [Float]
676
638
  attr_accessor :boost
677
639
 
678
- # @return [nil, :or, :and]
679
- attr_accessor :operator
680
-
681
640
  # @return [String]
682
641
  attr_accessor :field
683
642
 
@@ -690,15 +649,14 @@ module Couchbase
690
649
  yield self if block_given?
691
650
  end
692
651
 
693
- # @return [String]
694
- def to_json(*args)
652
+ # @return [Hash<Symbol, #to_json>]
653
+ def to_h
695
654
  data = {
696
- "polygon_points" => @coordinates.map { |coord| [coord.longitude, coord.latitude] },
655
+ :polygon_points => @coordinates.map { |coord| [coord.longitude, coord.latitude] },
697
656
  }
698
- data["boost"] = boost if boost
699
- data["operator"] = operator.to_s if operator
700
- data["field"] = field if field
701
- data.to_json(*args)
657
+ data[:boost] = boost if boost
658
+ data[:field] = field if field
659
+ data
702
660
  end
703
661
  end
704
662
 
@@ -716,9 +674,6 @@ module Couchbase
716
674
  # @return [Float]
717
675
  attr_accessor :boost
718
676
 
719
- # @return [nil, :or, :and]
720
- attr_accessor :operator
721
-
722
677
  # @yieldparam [ConjunctionQuery] self
723
678
  #
724
679
  # @param [*SearchQuery] queries
@@ -737,22 +692,21 @@ module Couchbase
737
692
  @queries.empty?
738
693
  end
739
694
 
740
- # @return [String]
741
- def to_json(*args)
695
+ # @return [Hash<Symbol, #to_json>]
696
+ def to_h
742
697
  raise ArgumentError, "compound conjunction query must have sub-queries" if @queries.nil? || @queries.empty?
743
698
 
744
- data = {"conjuncts" => @queries.uniq}
745
- data["boost"] = boost if boost
746
- data["operator"] = operator.to_s if operator
747
- data.to_json(*args)
699
+ data = {:conjuncts => @queries.uniq.map(&:to_h)}
700
+ data[:boost] = boost if boost
701
+ data
748
702
  end
749
703
  end
750
704
 
751
705
  # Prepare {ConjunctionQuery} body
752
706
  #
753
- # @yieldparam [ConjunctionQuery] query
707
+ # @yieldparam [DisjunctionQuery] query
754
708
  #
755
- # @return [ConjunctionQuery]
709
+ # @return [DisjunctionQuery]
756
710
  def self.disjuncts(...)
757
711
  DisjunctionQuery.new(...)
758
712
  end
@@ -762,9 +716,6 @@ module Couchbase
762
716
  # @return [Float]
763
717
  attr_accessor :boost
764
718
 
765
- # @return [nil, :or, :and]
766
- attr_accessor :operator
767
-
768
719
  # @return [Integer]
769
720
  attr_accessor :min
770
721
 
@@ -786,19 +737,18 @@ module Couchbase
786
737
  @queries.empty?
787
738
  end
788
739
 
789
- # @return [String]
790
- def to_json(*args)
740
+ # @return [Hash<Symbol, #to_json>]
741
+ def to_h
791
742
  raise ArgumentError, "compound disjunction query must have sub-queries" if @queries.nil? || @queries.empty?
792
743
 
793
- data = {"disjuncts" => @queries.uniq}
744
+ data = {:disjuncts => @queries.uniq.map(&:to_h)}
794
745
  if min
795
746
  raise ArgumentError, "disjunction query has fewer sub-queries than configured minimum" if @queries.size < min
796
747
 
797
- data["min"] = min
748
+ data[:min] = min
798
749
  end
799
- data["boost"] = boost if boost
800
- data["operator"] = operator.to_s if operator
801
- data.to_json(*args)
750
+ data[:boost] = boost if boost
751
+ data
802
752
  end
803
753
  end
804
754
 
@@ -816,9 +766,6 @@ module Couchbase
816
766
  # @return [Float]
817
767
  attr_accessor :boost
818
768
 
819
- # @return [nil, :or, :and]
820
- attr_accessor :operator
821
-
822
769
  # @yieldparam [BooleanQuery] self
823
770
  def initialize
824
771
  super()
@@ -852,19 +799,18 @@ module Couchbase
852
799
  self
853
800
  end
854
801
 
855
- # @return [String]
856
- def to_json(*args)
802
+ # @return [Hash<Symbol, #to_json>]
803
+ def to_h
857
804
  if @must.empty? && @must_not.empty? && @should.empty?
858
805
  raise ArgumentError, "BooleanQuery must have at least one non-empty sub-query"
859
806
  end
860
807
 
861
808
  data = {}
862
- data["must"] = @must unless @must.empty?
863
- data["must_not"] = @must_not unless @must_not.empty?
864
- data["should"] = @should unless @should.empty?
865
- data["boost"] = boost if boost
866
- data["operator"] = operator.to_s if operator
867
- data.to_json(*args)
809
+ data[:must] = @must.to_h unless @must.empty?
810
+ data[:must_not] = @must_not.to_h unless @must_not.empty?
811
+ data[:should] = @should.to_h unless @should.empty?
812
+ data[:boost] = boost if boost
813
+ data
868
814
  end
869
815
  end
870
816
 
@@ -884,9 +830,6 @@ module Couchbase
884
830
  # @return [Float]
885
831
  attr_accessor :boost
886
832
 
887
- # @return [nil, :or, :and]
888
- attr_accessor :operator
889
-
890
833
  # @return [String]
891
834
  attr_accessor :field
892
835
 
@@ -905,18 +848,16 @@ module Couchbase
905
848
  yield self if block_given?
906
849
  end
907
850
 
908
- # @return [String]
909
- def to_json(*args)
910
- data = {"term" => @term}
911
- data["boost"] = boost if boost
912
- data["operator"] = operator.to_s if operator
913
- data["operator"] = operator.to_s if operator
914
- data["field"] = field if field
851
+ # @return [Hash<Symbol, #to_json>]
852
+ def to_h
853
+ data = {:term => @term}
854
+ data[:boost] = boost if boost
855
+ data[:field] = field if field
915
856
  if fuzziness
916
- data["fuzziness"] = fuzziness
917
- data["prefix_length"] = prefix_length if prefix_length
857
+ data[:fuzziness] = fuzziness
858
+ data[:prefix_length] = prefix_length if prefix_length
918
859
  end
919
- data.to_json(*args)
860
+ data
920
861
  end
921
862
  end
922
863
 
@@ -950,13 +891,12 @@ module Couchbase
950
891
  yield self if block_given?
951
892
  end
952
893
 
953
- # @return [String]
954
- def to_json(*args)
955
- data = {"prefix" => @prefix}
956
- data["boost"] = boost if boost
957
- data["operator"] = operator.to_s if operator
958
- data["field"] = field if field
959
- data.to_json(*args)
894
+ # @return [Hash<Symbol, #to_json>]
895
+ def to_h
896
+ data = {:prefix => @prefix}
897
+ data[:boost] = boost if boost
898
+ data[:field] = field if field
899
+ data
960
900
  end
961
901
  end
962
902
 
@@ -975,9 +915,6 @@ module Couchbase
975
915
  # @return [Float]
976
916
  attr_accessor :boost
977
917
 
978
- # @return [nil, :or, :and]
979
- attr_accessor :operator
980
-
981
918
  # @return [String]
982
919
  attr_accessor :field
983
920
 
@@ -990,13 +927,12 @@ module Couchbase
990
927
  yield self if block_given?
991
928
  end
992
929
 
993
- # @return [String]
994
- def to_json(*args)
995
- data = {"terms" => @terms.flatten.uniq}
996
- data["boost"] = boost if boost
997
- data["operator"] = operator.to_s if operator
998
- data["field"] = field if field
999
- data.to_json(*args)
930
+ # @return [Hash<Symbol, #to_json>]
931
+ def to_h
932
+ data = {:terms => @terms.flatten.uniq}
933
+ data[:boost] = boost if boost
934
+ data[:field] = field if field
935
+ data
1000
936
  end
1001
937
  end
1002
938
 
@@ -1011,24 +947,15 @@ module Couchbase
1011
947
 
1012
948
  # A query that matches all indexed documents.
1013
949
  class MatchAllQuery < SearchQuery
1014
- # @return [Float]
1015
- attr_accessor :boost
1016
-
1017
- # @return [nil, :or, :and]
1018
- attr_accessor :operator
1019
-
1020
950
  # @yieldparam [MatchAllQuery] self
1021
951
  def initialize
1022
952
  super()
1023
953
  yield self if block_given?
1024
954
  end
1025
955
 
1026
- # @return [String]
1027
- def to_json(*args)
1028
- data = {"match_all" => nil}
1029
- data["boost"] = boost if boost
1030
- data["operator"] = operator.to_s if operator
1031
- data.to_json(*args)
956
+ # @return [Hash<Symbol, #to_json>]
957
+ def to_h
958
+ {:match_all => nil}
1032
959
  end
1033
960
  end
1034
961
 
@@ -1043,24 +970,15 @@ module Couchbase
1043
970
 
1044
971
  # A query that matches nothing.
1045
972
  class MatchNoneQuery < SearchQuery
1046
- # @return [Float]
1047
- attr_accessor :boost
1048
-
1049
- # @return [nil, :or, :and]
1050
- attr_accessor :operator
1051
-
1052
973
  # @yieldparam [MatchNoneQuery] self
1053
974
  def initialize
1054
975
  super()
1055
976
  yield self if block_given?
1056
977
  end
1057
978
 
1058
- # @return [String]
1059
- def to_json(*args)
1060
- data = {"match_none" => nil}
1061
- data["boost"] = boost if boost
1062
- data["operator"] = operator.to_s if operator
1063
- data.to_json(*args)
979
+ # @return [Hash<Symbol, #to_json>]
980
+ def to_h
981
+ {:match_none => nil}
1064
982
  end
1065
983
  end
1066
984
  end
@@ -1307,6 +1225,11 @@ module Couchbase
1307
1225
 
1308
1226
  # @return [Array<Integer>] the positions of the term within any elements.
1309
1227
  attr_accessor :array_positions
1228
+
1229
+ # @yieldparam [SearchRowLocation] self
1230
+ def initialize
1231
+ yield self if block_given?
1232
+ end
1310
1233
  end
1311
1234
 
1312
1235
  class SearchRowLocations