couchbase 3.4.2 → 3.4.4

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 (355) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/ext/couchbase/CMakeLists.txt +71 -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/build_config.hxx.in +3 -0
  8. data/ext/couchbase/core/bucket.cxx +183 -151
  9. data/ext/couchbase/core/bucket.hxx +23 -1
  10. data/ext/couchbase/core/cluster.hxx +51 -13
  11. data/ext/couchbase/core/cluster_options.cxx +2 -2
  12. data/ext/couchbase/core/cluster_options.hxx +7 -6
  13. data/ext/couchbase/core/cluster_options_fwd.hxx +26 -0
  14. data/ext/couchbase/core/config_profile.hxx +1 -54
  15. data/ext/couchbase/core/config_profiles.cxx +79 -0
  16. data/ext/couchbase/core/config_profiles.hxx +56 -0
  17. data/ext/couchbase/core/crud_component.cxx +51 -22
  18. data/ext/couchbase/core/error_context/key_value.cxx +2 -1
  19. data/ext/couchbase/core/error_context/key_value.hxx +10 -12
  20. data/ext/couchbase/core/error_context/search.hxx +1 -1
  21. data/ext/couchbase/core/impl/analytics.cxx +1 -0
  22. data/ext/couchbase/core/impl/boolean_field_query.cxx +40 -0
  23. data/ext/couchbase/core/impl/boolean_query.cxx +62 -0
  24. data/ext/couchbase/core/impl/build_deferred_query_indexes.cxx +115 -50
  25. data/ext/couchbase/core/impl/cluster.cxx +8 -0
  26. data/ext/couchbase/core/impl/conjunction_query.cxx +51 -0
  27. data/ext/couchbase/core/impl/create_bucket.cxx +155 -0
  28. data/ext/couchbase/core/impl/create_query_index.cxx +172 -59
  29. data/ext/couchbase/core/impl/date_range.cxx +89 -0
  30. data/ext/couchbase/core/impl/date_range_facet.cxx +54 -0
  31. data/ext/couchbase/core/impl/date_range_facet_result.cxx +64 -0
  32. data/ext/couchbase/core/impl/date_range_query.cxx +125 -0
  33. data/ext/couchbase/core/impl/disjunction_query.cxx +51 -0
  34. data/ext/couchbase/core/impl/dns_srv_tracker.cxx +2 -1
  35. data/ext/couchbase/core/impl/drop_bucket.cxx +66 -0
  36. data/ext/couchbase/core/impl/drop_query_index.cxx +138 -59
  37. data/ext/couchbase/core/impl/encoded_search_facet.hxx +29 -0
  38. data/ext/couchbase/core/impl/encoded_search_query.hxx +29 -0
  39. data/ext/couchbase/core/impl/encoded_search_sort.hxx +29 -0
  40. data/ext/couchbase/core/impl/flush_bucket.cxx +66 -0
  41. data/ext/couchbase/core/impl/geo_bounding_box_query.cxx +46 -0
  42. data/ext/couchbase/core/impl/geo_distance_query.cxx +43 -0
  43. data/ext/couchbase/core/impl/geo_polygon_query.cxx +46 -0
  44. data/ext/couchbase/core/impl/get_all_buckets.cxx +163 -0
  45. data/ext/couchbase/core/impl/get_all_query_indexes.cxx +67 -37
  46. data/ext/couchbase/core/impl/get_bucket.cxx +153 -0
  47. data/ext/couchbase/core/impl/internal_date_range_facet_result.cxx +80 -0
  48. data/ext/couchbase/core/impl/internal_date_range_facet_result.hxx +48 -0
  49. data/ext/couchbase/core/impl/internal_manager_error_context.cxx +113 -0
  50. data/ext/couchbase/core/impl/internal_manager_error_context.hxx +60 -0
  51. data/ext/couchbase/core/impl/internal_numeric_range_facet_result.cxx +80 -0
  52. data/ext/couchbase/core/impl/internal_numeric_range_facet_result.hxx +48 -0
  53. data/ext/couchbase/core/impl/internal_search_error_context.cxx +141 -0
  54. data/ext/couchbase/core/impl/internal_search_error_context.hxx +61 -0
  55. data/ext/couchbase/core/impl/internal_search_meta_data.cxx +60 -0
  56. data/ext/couchbase/core/impl/internal_search_meta_data.hxx +41 -0
  57. data/ext/couchbase/core/impl/internal_search_result.cxx +84 -0
  58. data/ext/couchbase/core/impl/internal_search_result.hxx +43 -0
  59. data/ext/couchbase/core/impl/internal_search_row.cxx +82 -0
  60. data/ext/couchbase/core/impl/internal_search_row.hxx +56 -0
  61. data/ext/couchbase/core/impl/internal_search_row_location.hxx +32 -0
  62. data/ext/couchbase/core/impl/internal_search_row_locations.cxx +137 -0
  63. data/ext/couchbase/core/impl/internal_search_row_locations.hxx +45 -0
  64. data/ext/couchbase/core/impl/internal_term_facet_result.cxx +80 -0
  65. data/ext/couchbase/core/impl/internal_term_facet_result.hxx +48 -0
  66. data/ext/couchbase/core/impl/key_value_error_category.cxx +2 -4
  67. data/ext/couchbase/core/impl/key_value_error_context.cxx +98 -0
  68. data/ext/couchbase/core/impl/lookup_in.cxx +1 -0
  69. data/ext/couchbase/core/impl/lookup_in_all_replicas.cxx +176 -0
  70. data/ext/couchbase/core/impl/lookup_in_all_replicas.hxx +80 -0
  71. data/ext/couchbase/core/impl/lookup_in_any_replica.cxx +167 -0
  72. data/ext/couchbase/core/impl/lookup_in_any_replica.hxx +75 -0
  73. data/ext/couchbase/core/impl/lookup_in_replica.cxx +97 -0
  74. data/ext/couchbase/core/impl/lookup_in_replica.hxx +67 -0
  75. data/ext/couchbase/core/impl/manager_error_context.cxx +100 -0
  76. data/ext/couchbase/core/impl/match_all_query.cxx +35 -0
  77. data/ext/couchbase/core/impl/match_none_query.cxx +35 -0
  78. data/ext/couchbase/core/impl/match_phrase_query.cxx +43 -0
  79. data/ext/couchbase/core/impl/match_query.cxx +59 -0
  80. data/ext/couchbase/core/impl/numeric_range.cxx +49 -0
  81. data/ext/couchbase/core/impl/numeric_range_facet.cxx +54 -0
  82. data/ext/couchbase/core/impl/numeric_range_facet_result.cxx +64 -0
  83. data/ext/couchbase/core/impl/numeric_range_query.cxx +56 -0
  84. data/ext/couchbase/core/impl/phrase_query.cxx +42 -0
  85. data/ext/couchbase/core/impl/prefix_query.cxx +40 -0
  86. data/ext/couchbase/core/impl/query.cxx +1 -0
  87. data/ext/couchbase/core/impl/query_error_context.cxx +75 -0
  88. data/ext/couchbase/core/impl/query_string_query.cxx +37 -0
  89. data/ext/couchbase/core/impl/regexp_query.cxx +40 -0
  90. data/ext/couchbase/core/impl/search.cxx +191 -0
  91. data/ext/couchbase/core/impl/search_error_context.cxx +147 -0
  92. data/ext/couchbase/core/impl/search_meta_data.cxx +46 -0
  93. data/ext/couchbase/core/impl/search_result.cxx +66 -0
  94. data/ext/couchbase/core/impl/search_row.cxx +74 -0
  95. data/ext/couchbase/core/impl/search_row_location.cxx +64 -0
  96. data/ext/couchbase/core/impl/search_row_locations.cxx +66 -0
  97. data/ext/couchbase/core/impl/search_sort_field.cxx +104 -0
  98. data/ext/couchbase/core/impl/search_sort_id.cxx +43 -0
  99. data/ext/couchbase/core/impl/search_sort_score.cxx +43 -0
  100. data/ext/couchbase/core/impl/term_facet.cxx +36 -0
  101. data/ext/couchbase/core/impl/term_facet_result.cxx +64 -0
  102. data/ext/couchbase/core/impl/term_query.cxx +56 -0
  103. data/ext/couchbase/core/impl/term_range_query.cxx +57 -0
  104. data/ext/couchbase/core/impl/update_bucket.cxx +130 -0
  105. data/ext/couchbase/core/impl/watch_query_indexes.cxx +53 -29
  106. data/ext/couchbase/core/impl/wildcard_query.cxx +40 -0
  107. data/ext/couchbase/core/io/dns_client.cxx +111 -40
  108. data/ext/couchbase/core/io/dns_config.cxx +5 -4
  109. data/ext/couchbase/core/io/http_context.hxx +1 -1
  110. data/ext/couchbase/core/io/http_session.hxx +34 -1
  111. data/ext/couchbase/core/io/http_session_manager.hxx +5 -3
  112. data/ext/couchbase/core/io/mcbp_command.hxx +9 -2
  113. data/ext/couchbase/core/io/mcbp_session.cxx +106 -42
  114. data/ext/couchbase/core/io/mcbp_session.hxx +4 -3
  115. data/ext/couchbase/core/io/retry_orchestrator.hxx +3 -2
  116. data/ext/couchbase/core/json_string.hxx +5 -0
  117. data/ext/couchbase/core/logger/custom_rotating_file_sink.cxx +1 -1
  118. data/ext/couchbase/core/logger/logger.cxx +80 -20
  119. data/ext/couchbase/core/logger/logger.hxx +31 -0
  120. data/ext/couchbase/core/meta/features.hxx +25 -0
  121. data/ext/couchbase/core/meta/version.cxx +18 -4
  122. data/ext/couchbase/core/mozilla_ca_bundle.hxx +39 -0
  123. data/ext/couchbase/core/operations/document_analytics.cxx +1 -0
  124. data/ext/couchbase/core/operations/document_analytics.hxx +1 -0
  125. data/ext/couchbase/core/operations/document_append.hxx +1 -1
  126. data/ext/couchbase/core/operations/document_decrement.hxx +1 -1
  127. data/ext/couchbase/core/operations/document_exists.hxx +1 -1
  128. data/ext/couchbase/core/operations/document_get.hxx +1 -1
  129. data/ext/couchbase/core/operations/document_get_and_lock.hxx +1 -1
  130. data/ext/couchbase/core/operations/document_get_and_touch.hxx +1 -1
  131. data/ext/couchbase/core/operations/document_get_projected.hxx +1 -1
  132. data/ext/couchbase/core/operations/document_increment.hxx +1 -1
  133. data/ext/couchbase/core/operations/document_insert.hxx +1 -1
  134. data/ext/couchbase/core/operations/document_lookup_in.hxx +1 -1
  135. data/ext/couchbase/core/operations/document_lookup_in_all_replicas.hxx +192 -0
  136. data/ext/couchbase/core/operations/document_lookup_in_any_replica.hxx +188 -0
  137. data/ext/couchbase/core/operations/document_mutate_in.hxx +1 -1
  138. data/ext/couchbase/core/operations/document_prepend.hxx +1 -1
  139. data/ext/couchbase/core/operations/document_query.cxx +13 -0
  140. data/ext/couchbase/core/operations/document_query.hxx +7 -0
  141. data/ext/couchbase/core/operations/document_remove.hxx +1 -1
  142. data/ext/couchbase/core/operations/document_replace.hxx +1 -1
  143. data/ext/couchbase/core/operations/document_search.cxx +4 -1
  144. data/ext/couchbase/core/operations/document_search.hxx +2 -1
  145. data/ext/couchbase/core/operations/document_touch.hxx +1 -1
  146. data/ext/couchbase/core/operations/document_unlock.hxx +1 -1
  147. data/ext/couchbase/core/operations/document_upsert.hxx +1 -1
  148. data/ext/couchbase/core/operations/document_view.hxx +1 -0
  149. data/ext/couchbase/core/operations.hxx +2 -0
  150. data/ext/couchbase/core/origin.cxx +270 -0
  151. data/ext/couchbase/core/origin.hxx +2 -0
  152. data/ext/couchbase/core/protocol/client_request.hxx +11 -2
  153. data/ext/couchbase/core/protocol/client_response.hxx +1 -0
  154. data/ext/couchbase/core/protocol/cmd_hello.hxx +1 -0
  155. data/ext/couchbase/core/protocol/cmd_lookup_in_replica.cxx +107 -0
  156. data/ext/couchbase/core/protocol/cmd_lookup_in_replica.hxx +137 -0
  157. data/ext/couchbase/core/protocol/hello_feature.hxx +6 -0
  158. data/ext/couchbase/core/protocol/hello_feature_fmt.hxx +3 -0
  159. data/ext/couchbase/core/protocol/status.cxx +2 -2
  160. data/ext/couchbase/core/public_fwd.hxx +21 -0
  161. data/ext/couchbase/core/range_scan_options.cxx +3 -27
  162. data/ext/couchbase/core/range_scan_options.hxx +13 -17
  163. data/ext/couchbase/core/range_scan_orchestrator.cxx +388 -170
  164. data/ext/couchbase/core/range_scan_orchestrator.hxx +13 -2
  165. data/ext/couchbase/core/range_scan_orchestrator_options.hxx +5 -3
  166. data/ext/couchbase/core/scan_options.hxx +0 -19
  167. data/ext/couchbase/core/scan_result.cxx +19 -5
  168. data/ext/couchbase/core/scan_result.hxx +5 -2
  169. data/ext/couchbase/core/timeout_defaults.hxx +2 -3
  170. data/ext/couchbase/core/tls_verify_mode.hxx +26 -0
  171. data/ext/couchbase/core/topology/capabilities.hxx +3 -0
  172. data/ext/couchbase/core/topology/capabilities_fmt.hxx +8 -0
  173. data/ext/couchbase/core/topology/collections_manifest_fmt.hxx +1 -1
  174. data/ext/couchbase/core/topology/configuration.cxx +15 -2
  175. data/ext/couchbase/core/topology/configuration.hxx +20 -1
  176. data/ext/couchbase/core/topology/configuration_json.hxx +6 -1
  177. data/ext/couchbase/core/transactions/attempt_context_testing_hooks.cxx +93 -0
  178. data/ext/couchbase/core/transactions/attempt_context_testing_hooks.hxx +48 -75
  179. data/ext/couchbase/core/transactions/cleanup_testing_hooks.cxx +52 -0
  180. data/ext/couchbase/core/transactions/cleanup_testing_hooks.hxx +17 -31
  181. data/ext/couchbase/core/transactions/exceptions.hxx +12 -9
  182. data/ext/couchbase/core/utils/connection_string.cxx +75 -43
  183. data/ext/couchbase/core/utils/connection_string.hxx +1 -0
  184. data/ext/couchbase/core/utils/json.cxx +4 -1
  185. data/ext/couchbase/couchbase/analytics_error_context.hxx +1 -1
  186. data/ext/couchbase/couchbase/behavior_options.hxx +27 -1
  187. data/ext/couchbase/couchbase/boolean_field_query.hxx +77 -0
  188. data/ext/couchbase/couchbase/boolean_query.hxx +223 -0
  189. data/ext/couchbase/couchbase/bucket_manager.hxx +135 -0
  190. data/ext/couchbase/couchbase/build_query_index_options.hxx +0 -30
  191. data/ext/couchbase/couchbase/cluster.hxx +56 -1
  192. data/ext/couchbase/couchbase/collection.hxx +111 -0
  193. data/ext/couchbase/couchbase/collection_query_index_manager.hxx +7 -48
  194. data/ext/couchbase/couchbase/conjunction_query.hxx +88 -0
  195. data/ext/couchbase/couchbase/create_bucket_options.hxx +41 -0
  196. data/ext/couchbase/couchbase/create_primary_query_index_options.hxx +0 -29
  197. data/ext/couchbase/couchbase/create_query_index_options.hxx +0 -33
  198. data/ext/couchbase/couchbase/date_range.hxx +69 -0
  199. data/ext/couchbase/couchbase/date_range_facet.hxx +56 -0
  200. data/ext/couchbase/couchbase/date_range_facet_result.hxx +55 -0
  201. data/ext/couchbase/couchbase/date_range_query.hxx +265 -0
  202. data/ext/couchbase/couchbase/disjunction_query.hxx +109 -0
  203. data/ext/couchbase/couchbase/doc_id_query.hxx +111 -0
  204. data/ext/couchbase/couchbase/drop_bucket_options.hxx +41 -0
  205. data/ext/couchbase/couchbase/drop_primary_query_index_options.hxx +0 -30
  206. data/ext/couchbase/couchbase/drop_query_index_options.hxx +0 -31
  207. data/ext/couchbase/couchbase/error_codes.hxx +1 -2
  208. data/ext/couchbase/couchbase/error_context.hxx +17 -8
  209. data/ext/couchbase/couchbase/flush_bucket_options.hxx +41 -0
  210. data/ext/couchbase/couchbase/fmt/analytics_scan_consistency.hxx +52 -0
  211. data/ext/couchbase/{core/topology/error_map_fmt.hxx → couchbase/fmt/key_value_error_map_attribute.hxx} +21 -21
  212. data/ext/couchbase/couchbase/fmt/search_scan_consistency.hxx +49 -0
  213. data/ext/couchbase/couchbase/geo_bounding_box_query.hxx +107 -0
  214. data/ext/couchbase/couchbase/geo_distance_query.hxx +109 -0
  215. data/ext/couchbase/couchbase/geo_point.hxx +32 -0
  216. data/ext/couchbase/couchbase/geo_polygon_query.hxx +85 -0
  217. data/ext/couchbase/couchbase/get_all_buckets_options.hxx +44 -0
  218. data/ext/couchbase/couchbase/get_all_query_indexes_options.hxx +0 -30
  219. data/ext/couchbase/couchbase/get_and_lock_options.hxx +2 -2
  220. data/ext/couchbase/couchbase/get_and_touch_options.hxx +2 -2
  221. data/ext/couchbase/couchbase/get_bucket_options.hxx +43 -0
  222. data/ext/couchbase/couchbase/get_options.hxx +2 -2
  223. data/ext/couchbase/couchbase/highlight_style.hxx +45 -0
  224. data/ext/couchbase/couchbase/insert_options.hxx +3 -3
  225. data/ext/couchbase/couchbase/key_value_error_context.hxx +7 -2
  226. data/ext/couchbase/couchbase/lookup_in_all_replicas_options.hxx +109 -0
  227. data/ext/couchbase/couchbase/lookup_in_any_replica_options.hxx +101 -0
  228. data/ext/couchbase/couchbase/lookup_in_options.hxx +2 -2
  229. data/ext/couchbase/couchbase/lookup_in_replica_result.hxx +74 -0
  230. data/ext/couchbase/couchbase/lookup_in_result.hxx +26 -0
  231. data/ext/couchbase/couchbase/management/bucket_settings.hxx +116 -0
  232. data/ext/couchbase/couchbase/manager_error_context.hxx +29 -53
  233. data/ext/couchbase/couchbase/match_all_query.hxx +43 -0
  234. data/ext/couchbase/couchbase/match_none_query.hxx +43 -0
  235. data/ext/couchbase/couchbase/match_operator.hxx +45 -0
  236. data/ext/couchbase/couchbase/match_phrase_query.hxx +108 -0
  237. data/ext/couchbase/couchbase/match_query.hxx +163 -0
  238. data/ext/couchbase/couchbase/mutate_in_options.hxx +2 -2
  239. data/ext/couchbase/couchbase/numeric_range.hxx +58 -0
  240. data/ext/couchbase/couchbase/numeric_range_facet.hxx +56 -0
  241. data/ext/couchbase/couchbase/numeric_range_facet_result.hxx +55 -0
  242. data/ext/couchbase/couchbase/numeric_range_query.hxx +143 -0
  243. data/ext/couchbase/couchbase/phrase_query.hxx +93 -0
  244. data/ext/couchbase/couchbase/prefix_query.hxx +82 -0
  245. data/ext/couchbase/couchbase/query_error_context.hxx +3 -1
  246. data/ext/couchbase/couchbase/query_index_manager.hxx +16 -83
  247. data/ext/couchbase/couchbase/query_options.hxx +18 -0
  248. data/ext/couchbase/couchbase/query_string_query.hxx +72 -0
  249. data/ext/couchbase/couchbase/regexp_query.hxx +82 -0
  250. data/ext/couchbase/couchbase/remove_options.hxx +2 -2
  251. data/ext/couchbase/couchbase/replace_options.hxx +3 -3
  252. data/ext/couchbase/couchbase/scope.hxx +40 -0
  253. data/ext/couchbase/couchbase/search_date_range.hxx +68 -0
  254. data/ext/couchbase/couchbase/search_error_context.hxx +138 -0
  255. data/ext/couchbase/couchbase/search_facet.hxx +60 -0
  256. data/ext/couchbase/couchbase/search_facet_result.hxx +50 -0
  257. data/ext/couchbase/couchbase/search_meta_data.hxx +85 -0
  258. data/ext/couchbase/couchbase/search_metrics.hxx +127 -0
  259. data/ext/couchbase/couchbase/search_numeric_range.hxx +69 -0
  260. data/ext/couchbase/couchbase/search_options.hxx +509 -0
  261. data/ext/couchbase/couchbase/search_query.hxx +69 -0
  262. data/ext/couchbase/couchbase/search_result.hxx +77 -0
  263. data/ext/couchbase/couchbase/search_row.hxx +104 -0
  264. data/ext/couchbase/couchbase/search_row_location.hxx +55 -0
  265. data/ext/couchbase/couchbase/search_row_locations.hxx +86 -0
  266. data/ext/couchbase/couchbase/search_scan_consistency.hxx +34 -0
  267. data/ext/couchbase/couchbase/search_sort.hxx +58 -0
  268. data/ext/couchbase/couchbase/search_sort_field.hxx +117 -0
  269. data/ext/couchbase/couchbase/search_sort_field_missing.hxx +26 -0
  270. data/ext/couchbase/couchbase/search_sort_field_mode.hxx +27 -0
  271. data/ext/couchbase/couchbase/search_sort_field_type.hxx +28 -0
  272. data/ext/couchbase/couchbase/search_sort_id.hxx +60 -0
  273. data/ext/couchbase/couchbase/search_sort_score.hxx +60 -0
  274. data/ext/couchbase/couchbase/search_term_range.hxx +51 -0
  275. data/ext/couchbase/couchbase/security_options.hxx +18 -0
  276. data/ext/couchbase/couchbase/subdocument_error_context.hxx +4 -2
  277. data/ext/couchbase/couchbase/term_facet.hxx +48 -0
  278. data/ext/couchbase/couchbase/term_facet_result.hxx +55 -0
  279. data/ext/couchbase/couchbase/term_query.hxx +151 -0
  280. data/ext/couchbase/couchbase/term_range_query.hxx +142 -0
  281. data/ext/couchbase/couchbase/touch_options.hxx +2 -2
  282. data/ext/couchbase/couchbase/tracing/request_span.hxx +63 -0
  283. data/ext/couchbase/couchbase/tracing/request_tracer.hxx +2 -40
  284. data/ext/couchbase/couchbase/transactions/async_attempt_context.hxx +83 -4
  285. data/ext/couchbase/couchbase/transactions/attempt_context.hxx +67 -0
  286. data/ext/couchbase/couchbase/transactions/transaction_get_result.hxx +2 -0
  287. data/ext/couchbase/couchbase/transactions/transaction_keyspace.hxx +11 -1
  288. data/ext/couchbase/couchbase/transactions/transaction_options.hxx +79 -8
  289. data/ext/couchbase/couchbase/transactions/transaction_query_options.hxx +128 -15
  290. data/ext/couchbase/couchbase/transactions/transaction_query_result.hxx +4 -0
  291. data/ext/couchbase/couchbase/transactions/transaction_result.hxx +1 -1
  292. data/ext/couchbase/couchbase/transactions/transactions_cleanup_config.hxx +5 -3
  293. data/ext/couchbase/couchbase/transactions/transactions_config.hxx +9 -5
  294. data/ext/couchbase/couchbase/transactions/transactions_query_config.hxx +6 -3
  295. data/ext/couchbase/couchbase/transactions.hxx +34 -1
  296. data/ext/couchbase/couchbase/unlock_options.hxx +2 -2
  297. data/ext/couchbase/couchbase/update_bucket_options.hxx +41 -0
  298. data/ext/couchbase/couchbase/upsert_options.hxx +3 -3
  299. data/ext/couchbase/couchbase/watch_query_indexes_options.hxx +0 -31
  300. data/ext/couchbase/couchbase/wildcard_query.hxx +83 -0
  301. data/ext/couchbase/test/CMakeLists.txt +8 -5
  302. data/ext/couchbase/test/benchmark_helper_integration.hxx +2 -2
  303. data/ext/couchbase/test/test_helper.hxx +5 -5
  304. data/ext/couchbase/test/test_integration_analytics.cxx +28 -6
  305. data/ext/couchbase/test/test_integration_collections.cxx +13 -3
  306. data/ext/couchbase/test/test_integration_connect.cxx +7 -3
  307. data/ext/couchbase/test/test_integration_crud.cxx +18 -3
  308. data/ext/couchbase/test/test_integration_diagnostics.cxx +11 -5
  309. data/ext/couchbase/test/test_integration_durability.cxx +12 -7
  310. data/ext/couchbase/test/test_integration_examples.cxx +419 -11
  311. data/ext/couchbase/test/test_integration_management.cxx +867 -368
  312. data/ext/couchbase/test/test_integration_query.cxx +87 -17
  313. data/ext/couchbase/test/test_integration_range_scan.cxx +363 -124
  314. data/ext/couchbase/test/test_integration_read_replica.cxx +48 -11
  315. data/ext/couchbase/test/test_integration_search.cxx +32 -3
  316. data/ext/couchbase/test/test_integration_subdoc.cxx +717 -11
  317. data/ext/couchbase/test/test_integration_tracer.cxx +5 -0
  318. data/ext/couchbase/test/test_integration_transcoders.cxx +13 -5
  319. data/ext/couchbase/test/{test_transaction_transaction_context.cxx → test_transaction_context.cxx} +1 -1
  320. data/ext/couchbase/test/test_transaction_examples.cxx +195 -0
  321. data/ext/couchbase/test/{test_transaction_transaction_public_async_api.cxx → test_transaction_public_async_api.cxx} +13 -12
  322. data/ext/couchbase/test/{test_transaction_transaction_public_blocking_api.cxx → test_transaction_public_blocking_api.cxx} +27 -21
  323. data/ext/couchbase/test/{test_transaction_transaction_simple.cxx → test_transaction_simple.cxx} +17 -5
  324. data/ext/couchbase/test/{test_transaction_transaction_simple_async.cxx → test_transaction_simple_async.cxx} +19 -21
  325. data/ext/couchbase/test/test_unit_config_profiles.cxx +1 -1
  326. data/ext/couchbase/test/test_unit_connection_string.cxx +29 -0
  327. data/ext/couchbase/test/test_unit_json_transcoder.cxx +4 -0
  328. data/ext/couchbase/test/test_unit_query.cxx +75 -0
  329. data/ext/couchbase/test/test_unit_search.cxx +427 -0
  330. data/ext/couchbase/test/test_unit_transaction_utils.cxx +10 -1
  331. data/ext/couchbase/test/test_unit_utils.cxx +8 -4
  332. data/ext/couchbase.cxx +641 -45
  333. data/ext/revisions.rb +3 -3
  334. data/lib/couchbase/authenticator.rb +0 -1
  335. data/lib/couchbase/cluster.rb +1 -5
  336. data/lib/couchbase/collection.rb +108 -0
  337. data/lib/couchbase/collection_options.rb +100 -0
  338. data/lib/couchbase/config_profiles.rb +1 -1
  339. data/lib/couchbase/errors.rb +5 -0
  340. data/lib/couchbase/json_transcoder.rb +12 -5
  341. data/lib/couchbase/key_value_scan.rb +125 -0
  342. data/lib/couchbase/management/collection_query_index_manager.rb +54 -15
  343. data/lib/couchbase/management/query_index_manager.rb +70 -5
  344. data/lib/couchbase/options.rb +151 -0
  345. data/lib/couchbase/raw_binary_transcoder.rb +37 -0
  346. data/lib/couchbase/raw_json_transcoder.rb +38 -0
  347. data/lib/couchbase/raw_string_transcoder.rb +40 -0
  348. data/lib/couchbase/scope.rb +1 -1
  349. data/lib/couchbase/search_options.rb +5 -0
  350. data/lib/couchbase/transcoder_flags.rb +62 -0
  351. data/lib/couchbase/utils/time.rb +14 -1
  352. data/lib/couchbase/version.rb +1 -1
  353. metadata +175 -13
  354. data/ext/couchbase/core/config_profile.cxx +0 -47
  355. data/ext/couchbase/core/impl/collection_query_index_manager.cxx +0 -93
@@ -0,0 +1,60 @@
1
+ /* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright 2023-Present Couchbase, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ #pragma once
19
+
20
+ #include <couchbase/search_sort.hxx>
21
+
22
+ namespace couchbase
23
+ {
24
+ /**
25
+ * Sorts by the hit score.
26
+ *
27
+ * @see https://docs.couchbase.com/server/current/fts/fts-search-request.html#sorting-with-objects
28
+ *
29
+ * @since 1.0.0
30
+ */
31
+ class search_sort_score : public search_sort
32
+ {
33
+ public:
34
+ search_sort_score() = default;
35
+
36
+ explicit search_sort_score(bool descending)
37
+ : search_sort{ descending }
38
+ {
39
+ }
40
+
41
+ /**
42
+ * Set the sorting direction.
43
+ *
44
+ * @param desc `true` for descending order, `false` for ascending
45
+ * @return pointer to this
46
+ *
47
+ * @since 1.0.0
48
+ * @committed
49
+ */
50
+ auto descending(bool desc) -> search_sort_score&;
51
+
52
+ /**
53
+ * @return encoded representation of the search facet.
54
+ *
55
+ * @since 1.0.0
56
+ * @internal
57
+ */
58
+ [[nodiscard]] auto encode() const -> encoded_search_sort override;
59
+ };
60
+ } // namespace couchbase
@@ -0,0 +1,51 @@
1
+ /* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright 2023-Present Couchbase, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ #pragma once
19
+
20
+ #include <cinttypes>
21
+ #include <string>
22
+
23
+ namespace couchbase
24
+ {
25
+ /**
26
+ * @since 1.0.0
27
+ * @committed
28
+ */
29
+ class search_term_range
30
+ {
31
+ public:
32
+ search_term_range(std::string name, std::uint64_t count)
33
+ : name_{ std::move(name) }
34
+ , count_{ count }
35
+ {
36
+ }
37
+
38
+ [[nodiscard]] auto name() const -> const std::string&
39
+ {
40
+ return name_;
41
+ }
42
+ [[nodiscard]] auto count() const -> std::uint64_t
43
+ {
44
+ return count_;
45
+ }
46
+
47
+ private:
48
+ std::string name_;
49
+ std::uint64_t count_;
50
+ };
51
+ } // namespace couchbase
@@ -45,10 +45,20 @@ class security_options
45
45
  return *this;
46
46
  }
47
47
 
48
+ auto trust_certificate_value(std::string certificate_value) -> security_options&
49
+ {
50
+ trust_certificate_value_ = certificate_value;
51
+ return *this;
52
+ }
53
+
48
54
  struct built {
49
55
  bool enabled;
50
56
  tls_verify_mode tls_verify;
51
57
  std::optional<std::string> trust_certificate;
58
+ std::optional<std::string> trust_certificate_value;
59
+ bool disable_mozilla_ca_certificates;
60
+ bool disable_deprecated_protocols;
61
+ bool disable_tls_v1_2;
52
62
  };
53
63
 
54
64
  [[nodiscard]] auto build() const -> built
@@ -57,6 +67,10 @@ class security_options
57
67
  enabled_,
58
68
  tls_verify_,
59
69
  trust_certificate_,
70
+ trust_certificate_value_,
71
+ disable_mozilla_ca_certificates_,
72
+ disable_deprecated_protocols,
73
+ disable_tls_v1_2,
60
74
  };
61
75
  }
62
76
 
@@ -64,5 +78,9 @@ class security_options
64
78
  bool enabled_{ true };
65
79
  tls_verify_mode tls_verify_{ tls_verify_mode::peer };
66
80
  std::optional<std::string> trust_certificate_{};
81
+ std::optional<std::string> trust_certificate_value_{};
82
+ bool disable_mozilla_ca_certificates_{ false };
83
+ bool disable_deprecated_protocols{ true };
84
+ bool disable_tls_v1_2{ false };
67
85
  };
68
86
  } // namespace couchbase
@@ -62,7 +62,8 @@ class subdocument_error_context : public key_value_error_context
62
62
  * @since 1.0.0
63
63
  * @internal
64
64
  */
65
- subdocument_error_context(std::error_code ec,
65
+ subdocument_error_context(std::string operation_id,
66
+ std::error_code ec,
66
67
  std::optional<std::string> last_dispatched_to,
67
68
  std::optional<std::string> last_dispatched_from,
68
69
  std::size_t retry_attempts,
@@ -79,7 +80,8 @@ class subdocument_error_context : public key_value_error_context
79
80
  std::optional<std::string> first_error_path,
80
81
  std::optional<std::uint64_t> first_error_index,
81
82
  bool deleted)
82
- : key_value_error_context{ ec,
83
+ : key_value_error_context{ std::move(operation_id),
84
+ ec,
83
85
  std::move(last_dispatched_to),
84
86
  std::move(last_dispatched_from),
85
87
  retry_attempts,
@@ -0,0 +1,48 @@
1
+ /* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright 2023-Present Couchbase, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ #pragma once
19
+
20
+ #include <couchbase/search_facet.hxx>
21
+
22
+ namespace couchbase
23
+ {
24
+ /**
25
+ * A facet that gives the number of occurrences of the most recurring terms in all rows.
26
+ */
27
+ class term_facet : public search_facet
28
+ {
29
+ public:
30
+ explicit term_facet(std::string field)
31
+ : search_facet{ std::move(field) }
32
+ {
33
+ }
34
+
35
+ term_facet(std::string field, std::uint32_t size)
36
+ : search_facet{ std::move(field), size }
37
+ {
38
+ }
39
+
40
+ /**
41
+ * @return encoded representation of the search facet.
42
+ *
43
+ * @since 1.0.0
44
+ * @internal
45
+ */
46
+ [[nodiscard]] auto encode() const -> encoded_search_facet override;
47
+ };
48
+ } // namespace couchbase
@@ -0,0 +1,55 @@
1
+ /* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright 2020-Present Couchbase, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ #pragma once
19
+
20
+ #include <couchbase/search_facet_result.hxx>
21
+ #include <couchbase/search_term_range.hxx>
22
+
23
+ #include <string>
24
+ #include <vector>
25
+
26
+ namespace couchbase
27
+ {
28
+ #ifndef COUCHBASE_CXX_CLIENT_DOXYGEN
29
+ class internal_term_facet_result;
30
+ #endif
31
+
32
+ /**
33
+ * @since 1.0.0
34
+ * @committed
35
+ */
36
+ class term_facet_result : public search_facet_result
37
+ {
38
+ public:
39
+ /**
40
+ * @since 1.0.0
41
+ * @internal
42
+ */
43
+ explicit term_facet_result(internal_term_facet_result internal);
44
+
45
+ [[nodiscard]] auto name() const -> const std::string& override;
46
+ [[nodiscard]] auto field() const -> const std::string& override;
47
+ [[nodiscard]] auto total() const -> std::uint64_t override;
48
+ [[nodiscard]] auto missing() const -> std::uint64_t override;
49
+ [[nodiscard]] auto other() const -> std::uint64_t override;
50
+ [[nodiscard]] auto terms() const -> const std::vector<search_term_range>&;
51
+
52
+ private:
53
+ std::unique_ptr<internal_term_facet_result> internal_;
54
+ };
55
+ } // namespace couchbase
@@ -0,0 +1,151 @@
1
+ /* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright 2023-Present Couchbase, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ #pragma once
19
+
20
+ #include <couchbase/match_operator.hxx>
21
+ #include <couchbase/search_query.hxx>
22
+
23
+ #include <cstdint>
24
+ #include <optional>
25
+ #include <stdexcept>
26
+ #include <string>
27
+
28
+ namespace couchbase
29
+ {
30
+ /**
31
+ * A query that looks for **exact** matches of the term in the index (no analyzer, no stemming). Useful to check what the actual content of
32
+ * the index is. It can also apply fuzziness on the term. Usual better alternative is @ref match_query.
33
+ *
34
+ * @see https://docs.couchbase.com/server/current/fts/fts-supported-queries-term.html server documentation
35
+ * @see https://docs.couchbase.com/server/current/fts/fts-supported-queries-fuzzy.html fuzzy search
36
+ *
37
+ * @since 1.0.0
38
+ * @committed
39
+ */
40
+ class term_query : public search_query
41
+ {
42
+ public:
43
+ /**
44
+ * Create a new term query.
45
+ *
46
+ * The mandatory term is the exact string that will be searched into the index. Note that the index can (and usually will) contain terms
47
+ * that are derived from the text in documents, as analyzers can apply process like stemming. For example, indexing "programming" could
48
+ * store "program" in the index. As a term query doesn't apply the analyzers, one would need to look for "program" to have a match on
49
+ * that index entry.
50
+ *
51
+ * @param term the input string to be matched against
52
+ *
53
+ * @since 1.0.0
54
+ * @committed
55
+ */
56
+ explicit term_query(std::string term)
57
+ : term_{ std::move(term) }
58
+ {
59
+ }
60
+
61
+ /**
62
+ * Require that the term also have the same prefix of the specified length (must be positive).
63
+ *
64
+ * The prefix length only makes sense when fuzziness is enabled. It allows to apply the fuzziness only on the part of the term that is
65
+ * after the `length` character mark.
66
+ *
67
+ * For example, with the term "something" and a prefix length of 4, only the "thing" part of the term will be fuzzy-searched, and hits
68
+ * must start with "some".
69
+ *
70
+ * @param length the length of the term prefix
71
+ *
72
+ * @return this query for chaining purposes.
73
+ *
74
+ * @since 1.0.0
75
+ * @committed
76
+ */
77
+ auto prefix_length(std::uint32_t length) -> term_query&
78
+ {
79
+ if (length <= 0) {
80
+ throw std::invalid_argument("prefix_length must be positive");
81
+ }
82
+
83
+ prefix_length_ = length;
84
+ return *this;
85
+ }
86
+
87
+ /**
88
+ * If a field is specified, only terms in that field will be matched.
89
+ *
90
+ * @param field_name name of the field to be matched
91
+ *
92
+ * @return this query for chaining purposes.
93
+ *
94
+ * @since 1.0.0
95
+ * @committed
96
+ */
97
+ auto field(std::string field_name) -> term_query&
98
+ {
99
+ field_ = std::move(field_name);
100
+ return *this;
101
+ }
102
+
103
+ /**
104
+ * Perform fuzzy matching. If the fuzziness parameter is set to a non-zero integer the analyzed text will be matched with the specified
105
+ * level of fuzziness.
106
+ *
107
+ * @param fuzziness level of fuzziness (the maximum supported fuzziness is 2).
108
+ *
109
+ * @return this query for chaining purposes.
110
+ *
111
+ * @since 1.0.0
112
+ * @committed
113
+ */
114
+ auto fuzziness(std::uint32_t fuzziness) -> term_query&
115
+ {
116
+ fuzziness_ = fuzziness;
117
+ return *this;
118
+ }
119
+
120
+ /**
121
+ * Defines how the individual match terms should be logically concatenated
122
+ *
123
+ * @param concatenation_operator operator to be used
124
+ *
125
+ * @return this query for chaining purposes.
126
+ *
127
+ * @since 1.0.0
128
+ * @committed
129
+ */
130
+ auto match_operator(couchbase::match_operator concatenation_operator) -> term_query&
131
+ {
132
+ operator_ = concatenation_operator;
133
+ return *this;
134
+ }
135
+
136
+ /**
137
+ * @return encoded representation of the query.
138
+ *
139
+ * @since 1.0.0
140
+ * @internal
141
+ */
142
+ [[nodiscard]] auto encode() const -> encoded_search_query override;
143
+
144
+ private:
145
+ std::string term_;
146
+ std::optional<std::uint32_t> prefix_length_{};
147
+ std::optional<std::string> field_{};
148
+ std::optional<std::uint32_t> fuzziness_{};
149
+ std::optional<couchbase::match_operator> operator_{};
150
+ };
151
+ } // namespace couchbase
@@ -0,0 +1,142 @@
1
+ /* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright 2023-Present Couchbase, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ #pragma once
19
+
20
+ #include <couchbase/match_operator.hxx>
21
+ #include <couchbase/search_query.hxx>
22
+
23
+ #include <optional>
24
+ #include <string>
25
+
26
+ namespace couchbase
27
+ {
28
+ /**
29
+ * The term range query finds documents containing a string value in the specified field within the specified range. Either min or max can
30
+ * be omitted, but not both.
31
+ *
32
+ * Match documents where field `desc` contains terms in the range `("foo", "foof")`:
33
+ * @snippet test_unit_search.cxx search-term-range
34
+ *
35
+ * @see https://docs.couchbase.com/server/current/fts/fts-supported-queries-term-range.html server documentation.
36
+ *
37
+ * @since 1.0.0
38
+ * @committed
39
+ */
40
+ class term_range_query : public search_query
41
+ {
42
+ public:
43
+ /**
44
+ * Set lower limit of the range. Whether to include limit into the range will be decided by server defaults.
45
+ *
46
+ * @param value lower limit of the range.
47
+ *
48
+ * @return this query for chaining purposes.
49
+ *
50
+ * @since 1.0.0
51
+ * @committed
52
+ */
53
+ auto min(std::string value) -> term_range_query&
54
+ {
55
+ min_ = std::move(value);
56
+ return *this;
57
+ }
58
+
59
+ /**
60
+ * Set lower limit and specify whether to include it into the limit.
61
+ *
62
+ * @param value lower limit of the range.
63
+ * @param inclusive whether to include limit value into the interval.
64
+ *
65
+ * @return this query for chaining purposes.
66
+ *
67
+ * @since 1.0.0
68
+ * @committed
69
+ */
70
+ auto min(std::string value, bool inclusive) -> term_range_query&
71
+ {
72
+ min_ = std::move(value);
73
+ inclusive_min_ = inclusive;
74
+ return *this;
75
+ }
76
+
77
+ /**
78
+ * Set upper limit of the range. Whether to include limit into the range will be decided by server defaults.
79
+ *
80
+ * @param value upper limit of the range
81
+ *
82
+ * @return this query for chaining purposes.
83
+ *
84
+ * @since 1.0.0
85
+ * @committed
86
+ */
87
+ auto max(std::string value) -> term_range_query&
88
+ {
89
+ max_ = std::move(value);
90
+ return *this;
91
+ }
92
+
93
+ /**
94
+ * Set upper limit and specify whether to include it into the limit.
95
+ *
96
+ * @param value upper limit of the range.
97
+ * @param inclusive whether to include limit value into the interval.
98
+ *
99
+ * @return this query for chaining purposes.
100
+ *
101
+ * @since 1.0.0
102
+ * @committed
103
+ */
104
+ auto max(std::string value, bool inclusive) -> term_range_query&
105
+ {
106
+ max_ = std::move(value);
107
+ inclusive_max_ = inclusive;
108
+ return *this;
109
+ }
110
+
111
+ /**
112
+ * If a field is specified, only terms in that field will be matched.
113
+ *
114
+ * @param field_name name of the field to be matched
115
+ *
116
+ * @return this query for chaining purposes.
117
+ *
118
+ * @since 1.0.0
119
+ * @committed
120
+ */
121
+ auto field(std::string field_name) -> term_range_query&
122
+ {
123
+ field_ = std::move(field_name);
124
+ return *this;
125
+ }
126
+
127
+ /**
128
+ * @return encoded representation of the query.
129
+ *
130
+ * @since 1.0.0
131
+ * @internal
132
+ */
133
+ [[nodiscard]] auto encode() const -> encoded_search_query override;
134
+
135
+ private:
136
+ std::optional<std::string> min_{};
137
+ std::optional<std::string> max_{};
138
+ std::optional<bool> inclusive_min_{};
139
+ std::optional<bool> inclusive_max_{};
140
+ std::optional<std::string> field_{};
141
+ };
142
+ } // namespace couchbase
@@ -86,8 +86,8 @@ initiate_touch_operation(std::shared_ptr<couchbase::core::cluster> core,
86
86
  std::string collection_name,
87
87
  std::string document_key,
88
88
  std::uint32_t expiry,
89
- touch_options::built options,
90
- touch_handler&& handler);
89
+ couchbase::touch_options::built options,
90
+ couchbase::touch_handler&& handler);
91
91
  #endif
92
92
  } // namespace impl
93
93
  } // namespace core
@@ -0,0 +1,63 @@
1
+ /* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright 2021 Couchbase, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ #pragma once
19
+
20
+ #include <cinttypes>
21
+ #include <memory>
22
+ #include <string>
23
+
24
+ namespace couchbase::tracing
25
+ {
26
+ class request_span
27
+ {
28
+ public:
29
+ request_span() = default;
30
+ request_span(const request_span& other) = default;
31
+ request_span(request_span&& other) = default;
32
+ request_span& operator=(const request_span& other) = default;
33
+ request_span& operator=(request_span&& other) = default;
34
+ virtual ~request_span() = default;
35
+
36
+ explicit request_span(std::string name)
37
+ : name_(std::move(name))
38
+ {
39
+ }
40
+ request_span(std::string name, std::shared_ptr<request_span> parent)
41
+ : name_(std::move(name))
42
+ , parent_(std::move(parent))
43
+ {
44
+ }
45
+ virtual void add_tag(const std::string& name, std::uint64_t value) = 0;
46
+ virtual void add_tag(const std::string& name, const std::string& value) = 0;
47
+ virtual void end() = 0;
48
+
49
+ [[nodiscard]] const std::string& name() const
50
+ {
51
+ return name_;
52
+ }
53
+
54
+ [[nodiscard]] std::shared_ptr<request_span> parent() const
55
+ {
56
+ return parent_;
57
+ }
58
+
59
+ private:
60
+ std::string name_{};
61
+ std::shared_ptr<request_span> parent_{ nullptr };
62
+ };
63
+ } // namespace couchbase::tracing
@@ -17,51 +17,13 @@
17
17
 
18
18
  #pragma once
19
19
 
20
+ #include "request_span.hxx"
21
+
20
22
  #include <memory>
21
23
  #include <string>
22
24
 
23
25
  namespace couchbase::tracing
24
26
  {
25
-
26
- class request_span
27
- {
28
- public:
29
- request_span() = default;
30
- request_span(const request_span& other) = default;
31
- request_span(request_span&& other) = default;
32
- request_span& operator=(const request_span& other) = default;
33
- request_span& operator=(request_span&& other) = default;
34
- virtual ~request_span() = default;
35
-
36
- explicit request_span(std::string name)
37
- : name_(std::move(name))
38
- , parent_(nullptr)
39
- {
40
- }
41
- request_span(std::string name, std::shared_ptr<request_span> parent)
42
- : name_(std::move(name))
43
- , parent_(std::move(parent))
44
- {
45
- }
46
- virtual void add_tag(const std::string& name, std::uint64_t value) = 0;
47
- virtual void add_tag(const std::string& name, const std::string& value) = 0;
48
- virtual void end() = 0;
49
-
50
- [[nodiscard]] const std::string& name() const
51
- {
52
- return name_;
53
- }
54
-
55
- [[nodiscard]] std::shared_ptr<request_span> parent() const
56
- {
57
- return parent_;
58
- }
59
-
60
- private:
61
- std::string name_{};
62
- std::shared_ptr<request_span> parent_{ nullptr };
63
- };
64
-
65
27
  class request_tracer
66
28
  {
67
29
  public: