couchbase 3.1.1-universal-darwin-20 → 3.2.0-universal-darwin-20

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 (221) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/ext/CMakeLists.txt +3 -1
  4. data/ext/build_version.hxx.in +1 -1
  5. data/ext/cmake/Testing.cmake +1 -0
  6. data/ext/cmake/ThirdPartyDependencies.cmake +6 -0
  7. data/ext/cmake/VersionInfo.cmake +3 -0
  8. data/ext/couchbase/bucket.hxx +47 -28
  9. data/ext/couchbase/cbsasl/client.h +1 -1
  10. data/ext/couchbase/cbsasl/context.cc +1 -1
  11. data/ext/couchbase/cbsasl/context.h +3 -3
  12. data/ext/couchbase/cbsasl/mechanism.cc +5 -8
  13. data/ext/couchbase/cbsasl/mechanism.h +1 -4
  14. data/ext/couchbase/cbsasl/plain/plain.cc +1 -1
  15. data/ext/couchbase/cbsasl/scram-sha/scram-sha.cc +30 -36
  16. data/ext/couchbase/cluster.hxx +40 -22
  17. data/ext/couchbase/cluster_options.hxx +7 -1
  18. data/ext/couchbase/configuration.hxx +37 -16
  19. data/ext/couchbase/couchbase.cxx +1145 -291
  20. data/ext/couchbase/error_map.hxx +1 -1
  21. data/ext/couchbase/errors.hxx +25 -17
  22. data/ext/couchbase/io/dns_client.hxx +3 -3
  23. data/ext/couchbase/io/dns_codec.hxx +4 -5
  24. data/ext/couchbase/io/dns_config.hxx +5 -6
  25. data/ext/couchbase/io/dns_message.hxx +3 -3
  26. data/ext/couchbase/io/http_command.hxx +70 -35
  27. data/ext/couchbase/io/http_session.hxx +4 -3
  28. data/ext/couchbase/io/http_session_manager.hxx +28 -19
  29. data/ext/couchbase/io/mcbp_command.hxx +51 -19
  30. data/ext/couchbase/io/mcbp_context.hxx +1 -1
  31. data/ext/couchbase/io/mcbp_parser.hxx +4 -4
  32. data/ext/couchbase/io/mcbp_session.hxx +91 -101
  33. data/ext/couchbase/io/query_cache.hxx +2 -2
  34. data/ext/couchbase/io/retry_orchestrator.hxx +2 -4
  35. data/ext/couchbase/io/retry_reason.hxx +2 -2
  36. data/ext/couchbase/io/retry_strategy.hxx +1 -6
  37. data/ext/couchbase/io/streams.hxx +7 -7
  38. data/ext/couchbase/metrics/logging_meter.hxx +228 -0
  39. data/ext/couchbase/metrics/logging_meter_options.hxx +28 -0
  40. data/ext/couchbase/metrics/meter.hxx +49 -0
  41. data/ext/couchbase/metrics/noop_meter.hxx +43 -0
  42. data/ext/couchbase/operations.hxx +4 -0
  43. data/ext/couchbase/operations/analytics_dataset_create.hxx +16 -12
  44. data/ext/couchbase/operations/analytics_dataset_drop.hxx +11 -11
  45. data/ext/couchbase/operations/analytics_dataset_get_all.hxx +6 -6
  46. data/ext/couchbase/operations/analytics_dataverse_create.hxx +10 -11
  47. data/ext/couchbase/operations/analytics_dataverse_drop.hxx +10 -11
  48. data/ext/couchbase/operations/analytics_get_pending_mutations.hxx +9 -11
  49. data/ext/couchbase/operations/analytics_index_create.hxx +14 -13
  50. data/ext/couchbase/operations/analytics_index_drop.hxx +18 -12
  51. data/ext/couchbase/operations/analytics_index_get_all.hxx +8 -6
  52. data/ext/couchbase/operations/analytics_link.hxx +39 -0
  53. data/ext/couchbase/operations/analytics_link_azure_blob_external.hxx +145 -0
  54. data/ext/couchbase/operations/analytics_link_connect.hxx +14 -12
  55. data/ext/couchbase/operations/analytics_link_couchbase_remote.hxx +220 -0
  56. data/ext/couchbase/operations/analytics_link_create.hxx +128 -0
  57. data/ext/couchbase/operations/analytics_link_disconnect.hxx +11 -12
  58. data/ext/couchbase/operations/analytics_link_drop.hxx +130 -0
  59. data/ext/couchbase/operations/analytics_link_get_all.hxx +160 -0
  60. data/ext/couchbase/operations/analytics_link_replace.hxx +128 -0
  61. data/ext/couchbase/operations/analytics_link_s3_external.hxx +122 -0
  62. data/ext/couchbase/operations/bucket_create.hxx +8 -8
  63. data/ext/couchbase/operations/bucket_drop.hxx +5 -5
  64. data/ext/couchbase/operations/bucket_flush.hxx +5 -5
  65. data/ext/couchbase/operations/bucket_get.hxx +7 -7
  66. data/ext/couchbase/operations/bucket_get_all.hxx +7 -5
  67. data/ext/couchbase/operations/bucket_settings.hxx +40 -49
  68. data/ext/couchbase/operations/bucket_update.hxx +8 -8
  69. data/ext/couchbase/operations/cluster_developer_preview_enable.hxx +7 -7
  70. data/ext/couchbase/operations/collection_create.hxx +11 -11
  71. data/ext/couchbase/operations/collection_drop.hxx +12 -10
  72. data/ext/couchbase/operations/collections_manifest_get.hxx +3 -3
  73. data/ext/couchbase/operations/design_document.hxx +2 -2
  74. data/ext/couchbase/operations/document_analytics.hxx +29 -36
  75. data/ext/couchbase/operations/document_append.hxx +3 -3
  76. data/ext/couchbase/operations/document_decrement.hxx +3 -3
  77. data/ext/couchbase/operations/document_exists.hxx +2 -2
  78. data/ext/couchbase/operations/document_get.hxx +3 -3
  79. data/ext/couchbase/operations/document_get_and_lock.hxx +5 -3
  80. data/ext/couchbase/operations/document_get_and_touch.hxx +5 -3
  81. data/ext/couchbase/operations/document_get_projected.hxx +10 -11
  82. data/ext/couchbase/operations/document_increment.hxx +3 -3
  83. data/ext/couchbase/operations/document_insert.hxx +3 -3
  84. data/ext/couchbase/operations/document_lookup_in.hxx +12 -18
  85. data/ext/couchbase/operations/document_mutate_in.hxx +13 -18
  86. data/ext/couchbase/operations/document_prepend.hxx +3 -3
  87. data/ext/couchbase/operations/document_query.hxx +39 -41
  88. data/ext/couchbase/operations/document_remove.hxx +3 -3
  89. data/ext/couchbase/operations/document_replace.hxx +3 -3
  90. data/ext/couchbase/operations/document_search.hxx +56 -61
  91. data/ext/couchbase/operations/document_touch.hxx +3 -3
  92. data/ext/couchbase/operations/document_unlock.hxx +3 -3
  93. data/ext/couchbase/operations/document_upsert.hxx +3 -3
  94. data/ext/couchbase/operations/document_view.hxx +23 -23
  95. data/ext/couchbase/operations/group_drop.hxx +5 -5
  96. data/ext/couchbase/operations/group_get.hxx +7 -7
  97. data/ext/couchbase/operations/group_get_all.hxx +6 -6
  98. data/ext/couchbase/operations/group_upsert.hxx +11 -11
  99. data/ext/couchbase/operations/http_noop.hxx +6 -6
  100. data/ext/couchbase/operations/mcbp_noop.hxx +3 -3
  101. data/ext/couchbase/operations/query_index_build_deferred.hxx +6 -6
  102. data/ext/couchbase/operations/query_index_create.hxx +10 -8
  103. data/ext/couchbase/operations/query_index_drop.hxx +8 -8
  104. data/ext/couchbase/operations/query_index_get_all.hxx +43 -39
  105. data/ext/couchbase/operations/rbac.hxx +40 -63
  106. data/ext/couchbase/operations/role_get_all.hxx +6 -6
  107. data/ext/couchbase/operations/scope_create.hxx +10 -10
  108. data/ext/couchbase/operations/scope_drop.hxx +9 -9
  109. data/ext/couchbase/operations/scope_get_all.hxx +8 -8
  110. data/ext/couchbase/operations/search_get_stats.hxx +5 -3
  111. data/ext/couchbase/operations/search_index.hxx +6 -15
  112. data/ext/couchbase/operations/search_index_analyze_document.hxx +11 -11
  113. data/ext/couchbase/operations/search_index_control_ingest.hxx +9 -9
  114. data/ext/couchbase/operations/search_index_control_plan_freeze.hxx +9 -9
  115. data/ext/couchbase/operations/search_index_control_query.hxx +9 -9
  116. data/ext/couchbase/operations/search_index_drop.hxx +11 -9
  117. data/ext/couchbase/operations/search_index_get.hxx +11 -9
  118. data/ext/couchbase/operations/search_index_get_all.hxx +11 -11
  119. data/ext/couchbase/operations/search_index_get_documents_count.hxx +10 -10
  120. data/ext/couchbase/operations/search_index_get_stats.hxx +10 -8
  121. data/ext/couchbase/operations/search_index_upsert.hxx +12 -10
  122. data/ext/couchbase/operations/user_drop.hxx +5 -5
  123. data/ext/couchbase/operations/user_get.hxx +7 -7
  124. data/ext/couchbase/operations/user_get_all.hxx +6 -6
  125. data/ext/couchbase/operations/user_upsert.hxx +9 -9
  126. data/ext/couchbase/operations/view_index_drop.hxx +10 -10
  127. data/ext/couchbase/operations/view_index_get.hxx +13 -15
  128. data/ext/couchbase/operations/view_index_get_all.hxx +17 -20
  129. data/ext/couchbase/operations/view_index_upsert.hxx +9 -7
  130. data/ext/couchbase/origin.hxx +14 -10
  131. data/ext/couchbase/platform/backtrace.c +1 -1
  132. data/ext/couchbase/platform/base64.cc +5 -5
  133. data/ext/couchbase/platform/base64.h +2 -5
  134. data/ext/couchbase/protocol/client_opcode.hxx +7 -4
  135. data/ext/couchbase/protocol/client_request.hxx +2 -2
  136. data/ext/couchbase/protocol/client_response.hxx +41 -16
  137. data/ext/couchbase/protocol/cmd_append.hxx +17 -16
  138. data/ext/couchbase/protocol/cmd_cluster_map_change_notification.hxx +4 -4
  139. data/ext/couchbase/protocol/cmd_decrement.hxx +10 -11
  140. data/ext/couchbase/protocol/cmd_exists.hxx +12 -15
  141. data/ext/couchbase/protocol/cmd_get.hxx +11 -14
  142. data/ext/couchbase/protocol/cmd_get_and_lock.hxx +10 -12
  143. data/ext/couchbase/protocol/cmd_get_and_touch.hxx +10 -12
  144. data/ext/couchbase/protocol/cmd_get_cluster_config.hxx +13 -18
  145. data/ext/couchbase/protocol/cmd_get_collection_id.hxx +12 -15
  146. data/ext/couchbase/protocol/cmd_get_collections_manifest.hxx +12 -16
  147. data/ext/couchbase/protocol/cmd_get_error_map.hxx +14 -17
  148. data/ext/couchbase/protocol/cmd_hello.hxx +8 -10
  149. data/ext/couchbase/protocol/cmd_increment.hxx +9 -10
  150. data/ext/couchbase/protocol/cmd_insert.hxx +9 -9
  151. data/ext/couchbase/protocol/cmd_lookup_in.hxx +12 -13
  152. data/ext/couchbase/protocol/cmd_mutate_in.hxx +11 -11
  153. data/ext/couchbase/protocol/cmd_noop.hxx +16 -20
  154. data/ext/couchbase/protocol/cmd_prepend.hxx +9 -10
  155. data/ext/couchbase/protocol/cmd_remove.hxx +10 -13
  156. data/ext/couchbase/protocol/cmd_replace.hxx +7 -7
  157. data/ext/couchbase/protocol/cmd_sasl_auth.hxx +8 -10
  158. data/ext/couchbase/protocol/cmd_sasl_list_mechs.hxx +10 -15
  159. data/ext/couchbase/protocol/cmd_sasl_step.hxx +10 -12
  160. data/ext/couchbase/protocol/cmd_select_bucket.hxx +14 -18
  161. data/ext/couchbase/protocol/cmd_touch.hxx +8 -11
  162. data/ext/couchbase/protocol/cmd_unlock.hxx +10 -14
  163. data/ext/couchbase/protocol/cmd_upsert.hxx +8 -8
  164. data/ext/couchbase/protocol/datatype.hxx +3 -3
  165. data/ext/couchbase/protocol/durability_level.hxx +2 -2
  166. data/ext/couchbase/protocol/frame_info_id.hxx +4 -4
  167. data/ext/couchbase/protocol/hello_feature.hxx +2 -2
  168. data/ext/couchbase/protocol/magic.hxx +2 -2
  169. data/ext/couchbase/protocol/server_opcode.hxx +2 -2
  170. data/ext/couchbase/protocol/server_request.hxx +1 -1
  171. data/ext/couchbase/protocol/status.hxx +4 -7
  172. data/ext/couchbase/protocol/unsigned_leb128.h +5 -20
  173. data/ext/couchbase/service_type.hxx +4 -4
  174. data/ext/couchbase/tracing/constants.hxx +261 -0
  175. data/ext/couchbase/tracing/noop_tracer.hxx +50 -0
  176. data/ext/couchbase/tracing/request_tracer.hxx +77 -0
  177. data/ext/couchbase/tracing/threshold_logging_options.hxx +64 -0
  178. data/ext/couchbase/tracing/threshold_logging_tracer.hxx +366 -0
  179. data/ext/couchbase/utils/byteswap.hxx +1 -1
  180. data/ext/couchbase/utils/connection_string.hxx +21 -1
  181. data/ext/couchbase/utils/name_codec.hxx +41 -0
  182. data/ext/couchbase/utils/url_codec.hxx +236 -0
  183. data/ext/couchbase/version.hxx +1 -1
  184. data/ext/test/CMakeLists.txt +1 -0
  185. data/ext/test/test_native_trivial_query.cxx +60 -0
  186. data/ext/third_party/hdr_histogram_c/CMakeLists.txt +84 -0
  187. data/ext/third_party/hdr_histogram_c/COPYING.txt +121 -0
  188. data/ext/third_party/hdr_histogram_c/LICENSE.txt +41 -0
  189. data/ext/third_party/hdr_histogram_c/config.cmake.in +6 -0
  190. data/ext/third_party/hdr_histogram_c/src/CMakeLists.txt +83 -0
  191. data/ext/third_party/hdr_histogram_c/src/hdr_atomic.h +146 -0
  192. data/ext/third_party/hdr_histogram_c/src/hdr_encoding.c +322 -0
  193. data/ext/third_party/hdr_histogram_c/src/hdr_encoding.h +79 -0
  194. data/ext/third_party/hdr_histogram_c/src/hdr_endian.h +116 -0
  195. data/ext/third_party/hdr_histogram_c/src/hdr_histogram.c +1196 -0
  196. data/ext/third_party/hdr_histogram_c/src/hdr_histogram.h +516 -0
  197. data/ext/third_party/hdr_histogram_c/src/hdr_histogram_log.c +1290 -0
  198. data/ext/third_party/hdr_histogram_c/src/hdr_histogram_log.h +236 -0
  199. data/ext/third_party/hdr_histogram_c/src/hdr_histogram_log_no_op.c +171 -0
  200. data/ext/third_party/hdr_histogram_c/src/hdr_interval_recorder.c +227 -0
  201. data/ext/third_party/hdr_histogram_c/src/hdr_interval_recorder.h +109 -0
  202. data/ext/third_party/hdr_histogram_c/src/hdr_malloc.h +19 -0
  203. data/ext/third_party/hdr_histogram_c/src/hdr_tests.h +22 -0
  204. data/ext/third_party/hdr_histogram_c/src/hdr_thread.c +108 -0
  205. data/ext/third_party/hdr_histogram_c/src/hdr_thread.h +55 -0
  206. data/ext/third_party/hdr_histogram_c/src/hdr_time.c +98 -0
  207. data/ext/third_party/hdr_histogram_c/src/hdr_time.h +49 -0
  208. data/ext/third_party/hdr_histogram_c/src/hdr_writer_reader_phaser.c +143 -0
  209. data/ext/third_party/hdr_histogram_c/src/hdr_writer_reader_phaser.h +51 -0
  210. data/lib/couchbase/cluster.rb +1 -0
  211. data/lib/couchbase/errors.rb +3 -0
  212. data/lib/couchbase/libcouchbase.bundle +0 -0
  213. data/lib/couchbase/management/analytics_index_manager.rb +920 -226
  214. data/lib/couchbase/management/bucket_manager.rb +207 -69
  215. data/lib/couchbase/management/collection_manager.rb +173 -61
  216. data/lib/couchbase/management/query_index_manager.rb +357 -169
  217. data/lib/couchbase/options.rb +75 -3
  218. data/lib/couchbase/scope.rb +102 -0
  219. data/lib/couchbase/utils/time.rb +4 -0
  220. data/lib/couchbase/version.rb +6 -6
  221. metadata +48 -5
@@ -43,7 +43,7 @@ struct group_get_request {
43
43
  std::chrono::milliseconds timeout{ timeout_defaults::management_timeout };
44
44
  std::string client_context_id{ uuid::to_string(uuid::random()) };
45
45
 
46
- [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context&)
46
+ [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context& /* context */) const
47
47
  {
48
48
  encoded.method = "GET";
49
49
  encoded.path = fmt::format("/settings/rbac/groups/{}", name);
@@ -53,24 +53,24 @@ struct group_get_request {
53
53
  };
54
54
 
55
55
  group_get_response
56
- make_response(error_context::http&& ctx, group_get_request&, group_get_request::encoded_response_type&& encoded)
56
+ make_response(error_context::http&& ctx, const group_get_request& /* request */, group_get_request::encoded_response_type&& encoded)
57
57
  {
58
- group_get_response response{ ctx };
58
+ group_get_response response{ std::move(ctx) };
59
59
  if (!response.ctx.ec) {
60
60
  switch (encoded.status_code) {
61
61
  case 200: {
62
62
  try {
63
63
  response.group = tao::json::from_string(encoded.body).as<rbac::group>();
64
- } catch (tao::json::pegtl::parse_error& e) {
65
- response.ctx.ec = std::make_error_code(error::common_errc::parsing_failure);
64
+ } catch (const tao::json::pegtl::parse_error& e) {
65
+ response.ctx.ec = error::common_errc::parsing_failure;
66
66
  return response;
67
67
  }
68
68
  } break;
69
69
  case 404:
70
- response.ctx.ec = std::make_error_code(error::management_errc::group_not_found);
70
+ response.ctx.ec = error::management_errc::group_not_found;
71
71
  break;
72
72
  default:
73
- response.ctx.ec = std::make_error_code(error::common_errc::internal_server_failure);
73
+ response.ctx.ec = error::common_errc::internal_server_failure;
74
74
  break;
75
75
  }
76
76
  }
@@ -42,7 +42,7 @@ struct group_get_all_request {
42
42
  std::chrono::milliseconds timeout{ timeout_defaults::management_timeout };
43
43
  std::string client_context_id{ uuid::to_string(uuid::random()) };
44
44
 
45
- [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context&)
45
+ [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context& /* context */) const
46
46
  {
47
47
  encoded.method = "GET";
48
48
  encoded.path = fmt::format("/settings/rbac/groups");
@@ -52,23 +52,23 @@ struct group_get_all_request {
52
52
  };
53
53
 
54
54
  group_get_all_response
55
- make_response(error_context::http&& ctx, group_get_all_request&, group_get_all_request::encoded_response_type&& encoded)
55
+ make_response(error_context::http&& ctx, const group_get_all_request& /* request */, group_get_all_request::encoded_response_type&& encoded)
56
56
  {
57
- group_get_all_response response{ ctx };
57
+ group_get_all_response response{ std::move(ctx) };
58
58
  if (!response.ctx.ec) {
59
59
  if (encoded.status_code == 200) {
60
60
  tao::json::value payload{};
61
61
  try {
62
62
  payload = tao::json::from_string(encoded.body);
63
- } catch (tao::json::pegtl::parse_error& e) {
64
- response.ctx.ec = std::make_error_code(error::common_errc::parsing_failure);
63
+ } catch (const tao::json::pegtl::parse_error& e) {
64
+ response.ctx.ec = error::common_errc::parsing_failure;
65
65
  return response;
66
66
  }
67
67
  for (const auto& entry : payload.get_array()) {
68
68
  response.groups.emplace_back(entry.as<rbac::group>());
69
69
  }
70
70
  } else {
71
- response.ctx.ec = std::make_error_code(error::common_errc::internal_server_failure);
71
+ response.ctx.ec = error::common_errc::internal_server_failure;
72
72
  }
73
73
  }
74
74
  return response;
@@ -47,7 +47,7 @@ struct group_upsert_request {
47
47
  std::chrono::milliseconds timeout{ timeout_defaults::management_timeout };
48
48
  std::string client_context_id{ uuid::to_string(uuid::random()) };
49
49
 
50
- [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context&)
50
+ [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context& /* context */) const
51
51
  {
52
52
  encoded.method = "PUT";
53
53
  encoded.path = fmt::format("/settings/rbac/groups/{}", group.name);
@@ -91,31 +91,31 @@ struct group_upsert_request {
91
91
  };
92
92
 
93
93
  group_upsert_response
94
- make_response(error_context::http&& ctx, group_upsert_request&, group_upsert_request::encoded_response_type&& encoded)
94
+ make_response(error_context::http&& ctx, const group_upsert_request& /* request */, group_upsert_request::encoded_response_type&& encoded)
95
95
  {
96
- group_upsert_response response{ ctx };
96
+ group_upsert_response response{ std::move(ctx) };
97
97
  if (!response.ctx.ec) {
98
98
  switch (encoded.status_code) {
99
99
  case 200:
100
100
  break;
101
101
  case 400: {
102
- response.ctx.ec = std::make_error_code(error::common_errc::invalid_argument);
102
+ response.ctx.ec = error::common_errc::invalid_argument;
103
103
  tao::json::value payload{};
104
104
  try {
105
105
  payload = tao::json::from_string(encoded.body);
106
- } catch (tao::json::pegtl::parse_error& e) {
107
- response.ctx.ec = std::make_error_code(error::common_errc::parsing_failure);
106
+ } catch (const tao::json::pegtl::parse_error&) {
107
+ response.ctx.ec = error::common_errc::parsing_failure;
108
108
  return response;
109
109
  }
110
- const auto* errors = payload.find("errors");
111
- if (errors != nullptr && errors->is_object()) {
112
- for (const auto& entry : errors->get_object()) {
113
- response.errors.emplace_back(fmt::format("{}: {}", entry.first, entry.second.get_string()));
110
+
111
+ if (const auto* errors = payload.find("errors"); errors != nullptr && errors->is_object()) {
112
+ for (const auto& [code, message] : errors->get_object()) {
113
+ response.errors.emplace_back(fmt::format("{}: {}", code, message.get_string()));
114
114
  }
115
115
  }
116
116
  } break;
117
117
  default:
118
- response.ctx.ec = std::make_error_code(error::common_errc::internal_server_failure);
118
+ response.ctx.ec = error::common_errc::internal_server_failure;
119
119
  break;
120
120
  }
121
121
  }
@@ -39,7 +39,7 @@ struct http_noop_request {
39
39
 
40
40
  std::string client_context_id{ uuid::to_string(uuid::random()) };
41
41
 
42
- [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context&)
42
+ [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context& /* context */)
43
43
  {
44
44
  encoded.headers["connection"] = "keep-alive";
45
45
  encoded.method = "GET";
@@ -56,22 +56,22 @@ struct http_noop_request {
56
56
  timeout = timeout_defaults::search_timeout;
57
57
  encoded.path = "/api/ping";
58
58
  break;
59
- case service_type::views:
59
+ case service_type::view:
60
60
  timeout = timeout_defaults::view_timeout;
61
61
  encoded.path = "/";
62
62
  break;
63
63
  case service_type::management:
64
- case service_type::kv:
65
- return std::make_error_code(error::common_errc::feature_not_available);
64
+ case service_type::key_value:
65
+ return error::common_errc::feature_not_available;
66
66
  }
67
67
  return {};
68
68
  }
69
69
  };
70
70
 
71
71
  http_noop_response
72
- make_response(error_context::http&& ctx, http_noop_request&, http_noop_request::encoded_response_type&&)
72
+ make_response(error_context::http&& ctx, const http_noop_request& /* request */, http_noop_request::encoded_response_type&&)
73
73
  {
74
- http_noop_response response{ ctx };
74
+ http_noop_response response{ std::move(ctx) };
75
75
  return response;
76
76
  }
77
77
 
@@ -37,7 +37,7 @@ struct mcbp_noop_request {
37
37
  std::chrono::milliseconds timeout{ timeout_defaults::key_value_timeout };
38
38
  io::retry_context<io::retry_strategy::best_effort> retries{ true };
39
39
 
40
- [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, mcbp_context&&)
40
+ [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, mcbp_context&& /* context */) const
41
41
  {
42
42
  encoded.opaque(opaque);
43
43
  encoded.partition(partition);
@@ -46,9 +46,9 @@ struct mcbp_noop_request {
46
46
  };
47
47
 
48
48
  mcbp_noop_response
49
- make_response(error_context::key_value&& ctx, mcbp_noop_request&, mcbp_noop_request::encoded_response_type&&)
49
+ make_response(error_context::key_value&& ctx, const mcbp_noop_request& /* request */, mcbp_noop_request::encoded_response_type&&)
50
50
  {
51
- mcbp_noop_response response{ ctx };
51
+ mcbp_noop_response response{ std::move(ctx) };
52
52
  return response;
53
53
  }
54
54
 
@@ -45,7 +45,7 @@ struct query_index_build_deferred_request {
45
45
  std::string bucket_name;
46
46
  std::chrono::milliseconds timeout{ timeout_defaults::management_timeout };
47
47
 
48
- [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context&)
48
+ [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context& /* context */) const
49
49
  {
50
50
  encoded.headers["content-type"] = "application/json";
51
51
  tao::json::value body{
@@ -64,16 +64,16 @@ struct query_index_build_deferred_request {
64
64
 
65
65
  query_index_build_deferred_response
66
66
  make_response(error_context::http&& ctx,
67
- query_index_build_deferred_request&,
67
+ const query_index_build_deferred_request& /* request */,
68
68
  query_index_build_deferred_request::encoded_response_type&& encoded)
69
69
  {
70
- query_index_build_deferred_response response{ ctx };
70
+ query_index_build_deferred_response response{ std::move(ctx) };
71
71
  if (!response.ctx.ec) {
72
72
  tao::json::value payload{};
73
73
  try {
74
74
  payload = tao::json::from_string(encoded.body);
75
- } catch (tao::json::pegtl::parse_error& e) {
76
- response.ctx.ec = std::make_error_code(error::common_errc::parsing_failure);
75
+ } catch (const tao::json::pegtl::parse_error& e) {
76
+ response.ctx.ec = error::common_errc::parsing_failure;
77
77
  return response;
78
78
  }
79
79
  response.status = payload.at("status").get_string();
@@ -84,7 +84,7 @@ make_response(error_context::http&& ctx,
84
84
  error.message = entry.at("msg").get_string();
85
85
  response.errors.emplace_back(error);
86
86
  }
87
- response.ctx.ec = std::make_error_code(error::common_errc::internal_server_failure);
87
+ response.ctx.ec = error::common_errc::internal_server_failure;
88
88
  }
89
89
  }
90
90
  return response;
@@ -55,7 +55,7 @@ struct query_index_create_request {
55
55
  std::optional<int> num_replicas{};
56
56
  std::chrono::milliseconds timeout{ timeout_defaults::management_timeout };
57
57
 
58
- [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context&)
58
+ [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context& /* context */) const
59
59
  {
60
60
  encoded.headers["content-type"] = "application/json";
61
61
  tao::json::value with{};
@@ -100,15 +100,17 @@ struct query_index_create_request {
100
100
  };
101
101
 
102
102
  query_index_create_response
103
- make_response(error_context::http&& ctx, query_index_create_request& request, query_index_create_request::encoded_response_type&& encoded)
103
+ make_response(error_context::http&& ctx,
104
+ const query_index_create_request& request,
105
+ query_index_create_request::encoded_response_type&& encoded)
104
106
  {
105
- query_index_create_response response{ ctx };
107
+ query_index_create_response response{ std::move(ctx) };
106
108
  if (!response.ctx.ec) {
107
109
  tao::json::value payload{};
108
110
  try {
109
111
  payload = tao::json::from_string(encoded.body);
110
- } catch (tao::json::pegtl::parse_error& e) {
111
- response.ctx.ec = std::make_error_code(error::common_errc::parsing_failure);
112
+ } catch (const tao::json::pegtl::parse_error& e) {
113
+ response.ctx.ec = error::common_errc::parsing_failure;
112
114
  return response;
113
115
  }
114
116
  response.status = payload.at("status").get_string();
@@ -137,12 +139,12 @@ make_response(error_context::http&& ctx, query_index_create_request& request, qu
137
139
  }
138
140
  if (index_already_exists) {
139
141
  if (!request.ignore_if_exists) {
140
- response.ctx.ec = std::make_error_code(error::common_errc::index_exists);
142
+ response.ctx.ec = error::common_errc::index_exists;
141
143
  }
142
144
  } else if (bucket_not_found) {
143
- response.ctx.ec = std::make_error_code(error::common_errc::bucket_not_found);
145
+ response.ctx.ec = error::common_errc::bucket_not_found;
144
146
  } else if (!response.errors.empty()) {
145
- response.ctx.ec = std::make_error_code(error::common_errc::internal_server_failure);
147
+ response.ctx.ec = error::common_errc::internal_server_failure;
146
148
  }
147
149
  }
148
150
  }
@@ -51,7 +51,7 @@ struct query_index_drop_request {
51
51
  bool ignore_if_does_not_exist{ false };
52
52
  std::chrono::milliseconds timeout{ timeout_defaults::management_timeout };
53
53
 
54
- [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context&)
54
+ [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context& /* context */) const
55
55
  {
56
56
  encoded.headers["content-type"] = "application/json";
57
57
  std::string keyspace = fmt::format("`{}`", bucket_name);
@@ -73,15 +73,15 @@ struct query_index_drop_request {
73
73
  };
74
74
 
75
75
  query_index_drop_response
76
- make_response(error_context::http&& ctx, query_index_drop_request& request, query_index_drop_request::encoded_response_type&& encoded)
76
+ make_response(error_context::http&& ctx, const query_index_drop_request& request, query_index_drop_request::encoded_response_type&& encoded)
77
77
  {
78
- query_index_drop_response response{ ctx };
78
+ query_index_drop_response response{ std::move(ctx) };
79
79
  if (!response.ctx.ec) {
80
80
  tao::json::value payload{};
81
81
  try {
82
82
  payload = tao::json::from_string(encoded.body);
83
- } catch (tao::json::pegtl::parse_error& e) {
84
- response.ctx.ec = std::make_error_code(error::common_errc::parsing_failure);
83
+ } catch (const tao::json::pegtl::parse_error& e) {
84
+ response.ctx.ec = error::common_errc::parsing_failure;
85
85
  return response;
86
86
  }
87
87
  response.status = payload.at("status").get_string();
@@ -111,12 +111,12 @@ make_response(error_context::http&& ctx, query_index_drop_request& request, quer
111
111
  }
112
112
  if (index_not_found) {
113
113
  if (!request.ignore_if_does_not_exist) {
114
- response.ctx.ec = std::make_error_code(error::common_errc::index_not_found);
114
+ response.ctx.ec = error::common_errc::index_not_found;
115
115
  }
116
116
  } else if (bucket_not_found) {
117
- response.ctx.ec = std::make_error_code(error::common_errc::bucket_not_found);
117
+ response.ctx.ec = error::common_errc::bucket_not_found;
118
118
  } else if (!response.errors.empty()) {
119
- response.ctx.ec = std::make_error_code(error::common_errc::internal_server_failure);
119
+ response.ctx.ec = error::common_errc::internal_server_failure;
120
120
  }
121
121
  }
122
122
  }
@@ -35,6 +35,7 @@ struct query_index_get_all_response {
35
35
  std::string collection_name;
36
36
  std::string type;
37
37
  std::vector<std::string> index_key{};
38
+ std::optional<std::string> partition{};
38
39
  std::optional<std::string> condition{};
39
40
  std::optional<std::string> bucket_id{};
40
41
  std::optional<std::string> scope_id{};
@@ -56,7 +57,7 @@ struct query_index_get_all_request {
56
57
  std::string bucket_name;
57
58
  std::chrono::milliseconds timeout{ timeout_defaults::management_timeout };
58
59
 
59
- [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context&)
60
+ [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context& /* context */) const
60
61
  {
61
62
  encoded.headers["content-type"] = "application/json";
62
63
  tao::json::value body{
@@ -75,46 +76,49 @@ struct query_index_get_all_request {
75
76
  };
76
77
 
77
78
  query_index_get_all_response
78
- make_response(error_context::http&& ctx, query_index_get_all_request&, query_index_get_all_request::encoded_response_type&& encoded)
79
+ make_response(error_context::http&& ctx,
80
+ const query_index_get_all_request& /* request */,
81
+ query_index_get_all_request::encoded_response_type&& encoded)
79
82
  {
80
- query_index_get_all_response response{ ctx };
81
- if (!response.ctx.ec) {
82
- if (encoded.status_code == 200) {
83
- tao::json::value payload{};
84
- try {
85
- payload = tao::json::from_string(encoded.body);
86
- } catch (tao::json::pegtl::parse_error& e) {
87
- response.ctx.ec = std::make_error_code(error::common_errc::parsing_failure);
88
- return response;
89
- }
90
- response.status = payload.at("status").get_string();
91
- if (response.status == "success") {
92
- for (const auto& entry : payload.at("results").get_array()) {
93
- query_index_get_all_response::query_index index;
94
- index.id = entry.at("id").get_string();
95
- index.datastore_id = entry.at("datastore_id").get_string();
96
- index.namespace_id = entry.at("namespace_id").get_string();
97
- index.keyspace_id = entry.at("keyspace_id").get_string();
98
- index.type = entry.at("using").get_string();
99
- index.name = entry.at("name").get_string();
100
- index.state = entry.at("state").get_string();
101
- if (const auto* prop = entry.find("bucket_id")) {
102
- index.bucket_id = prop->get_string();
103
- }
104
- if (const auto* prop = entry.find("scope_id")) {
105
- index.scope_id = prop->get_string();
106
- }
107
- if (const auto* prop = entry.find("is_primary")) {
108
- index.is_primary = prop->get_boolean();
109
- }
110
- if (const auto* prop = entry.find("condition")) {
111
- index.condition = prop->get_string();
112
- }
113
- for (const auto& key : entry.at("index_key").get_array()) {
114
- index.index_key.emplace_back(key.get_string());
115
- }
116
- response.indexes.emplace_back(index);
83
+ query_index_get_all_response response{ std::move(ctx) };
84
+ if (!response.ctx.ec && encoded.status_code == 200) {
85
+ tao::json::value payload{};
86
+ try {
87
+ payload = tao::json::from_string(encoded.body);
88
+ } catch (const tao::json::pegtl::parse_error& e) {
89
+ response.ctx.ec = error::common_errc::parsing_failure;
90
+ return response;
91
+ }
92
+ response.status = payload.at("status").get_string();
93
+ if (response.status == "success") {
94
+ for (const auto& entry : payload.at("results").get_array()) {
95
+ query_index_get_all_response::query_index index;
96
+ index.id = entry.at("id").get_string();
97
+ index.datastore_id = entry.at("datastore_id").get_string();
98
+ index.namespace_id = entry.at("namespace_id").get_string();
99
+ index.keyspace_id = entry.at("keyspace_id").get_string();
100
+ index.type = entry.at("using").get_string();
101
+ index.name = entry.at("name").get_string();
102
+ index.state = entry.at("state").get_string();
103
+ if (const auto* prop = entry.find("bucket_id")) {
104
+ index.bucket_id = prop->get_string();
105
+ }
106
+ if (const auto* prop = entry.find("scope_id")) {
107
+ index.scope_id = prop->get_string();
108
+ }
109
+ if (const auto* prop = entry.find("is_primary")) {
110
+ index.is_primary = prop->get_boolean();
111
+ }
112
+ if (const auto* prop = entry.find("condition")) {
113
+ index.condition = prop->get_string();
114
+ }
115
+ if (const auto* prop = entry.find("partition")) {
116
+ index.partition = prop->get_string();
117
+ }
118
+ for (const auto& key : entry.at("index_key").get_array()) {
119
+ index.index_key.emplace_back(key.get_string());
117
120
  }
121
+ response.indexes.emplace_back(index);
118
122
  }
119
123
  }
120
124
  }
@@ -84,8 +84,7 @@ struct traits<couchbase::operations::rbac::user_and_metadata> {
84
84
  static couchbase::operations::rbac::user_and_metadata as(const tao::json::basic_value<Traits>& v)
85
85
  {
86
86
  couchbase::operations::rbac::user_and_metadata result;
87
- std::string domain = v.at("domain").get_string();
88
- if (domain == "local") {
87
+ if (const std::string& domain = v.at("domain").get_string(); domain == "local") {
89
88
  result.domain = couchbase::operations::rbac::auth_domain::local;
90
89
  } else if (domain == "external") {
91
90
  result.domain = couchbase::operations::rbac::auth_domain::external;
@@ -93,78 +92,56 @@ struct traits<couchbase::operations::rbac::user_and_metadata> {
93
92
  spdlog::error(R"("unexpected domain for user with metadata: "{}")", domain);
94
93
  }
95
94
  result.username = v.at("id").get_string();
96
- {
97
- const auto* display_name = v.find("name");
98
- if (display_name != nullptr && !display_name->get_string().empty()) {
99
- result.display_name = display_name->get_string();
100
- }
95
+ if (const auto* display_name = v.find("name"); display_name != nullptr && !display_name->get_string().empty()) {
96
+ result.display_name = display_name->get_string();
101
97
  }
102
98
  result.password_changed = v.template optional<std::string>("password_change_date");
103
- {
104
- const auto* external_groups = v.find("external_groups");
105
- if (external_groups != nullptr) {
106
- for (const auto& group : external_groups->get_array()) {
107
- result.external_groups.insert(group.get_string());
108
- }
99
+ if (const auto* external_groups = v.find("external_groups"); external_groups != nullptr) {
100
+ for (const auto& group : external_groups->get_array()) {
101
+ result.external_groups.insert(group.get_string());
109
102
  }
110
103
  }
111
- {
112
- const auto* groups = v.find("groups");
113
- if (groups != nullptr) {
114
- for (const auto& group : groups->get_array()) {
115
- result.groups.insert(group.get_string());
116
- }
104
+ if (const auto* groups = v.find("groups"); groups != nullptr) {
105
+ for (const auto& group : groups->get_array()) {
106
+ result.groups.insert(group.get_string());
117
107
  }
118
108
  }
119
- {
120
- const auto* roles = v.find("roles");
121
- if (roles != nullptr) {
122
- for (const auto& entry : roles->get_array()) {
123
- couchbase::operations::rbac::role_and_origins role{};
124
- role.name = entry.at("role").get_string();
125
- {
126
- const auto* bucket = entry.find("bucket_name");
127
- if (bucket != nullptr && !bucket->get_string().empty()) {
128
- role.bucket = bucket->get_string();
129
- }
130
- }
131
- {
132
- const auto* scope = entry.find("scope_name");
133
- if (scope != nullptr && !scope->get_string().empty()) {
134
- role.scope = scope->get_string();
109
+ if (const auto* roles = v.find("roles"); roles != nullptr) {
110
+ for (const auto& entry : roles->get_array()) {
111
+ couchbase::operations::rbac::role_and_origins role{};
112
+ role.name = entry.at("role").get_string();
113
+ if (const auto* bucket = entry.find("bucket_name"); bucket != nullptr && !bucket->get_string().empty()) {
114
+ role.bucket = bucket->get_string();
115
+ }
116
+ if (const auto* scope = entry.find("scope_name"); scope != nullptr && !scope->get_string().empty()) {
117
+ role.scope = scope->get_string();
118
+ }
119
+
120
+ if (const auto* collection = entry.find("collection_name"); collection != nullptr && !collection->get_string().empty()) {
121
+ role.collection = collection->get_string();
122
+ }
123
+
124
+ if (const auto* origins = entry.find("origins"); origins != nullptr) {
125
+ bool has_user_origin = false;
126
+ for (const auto& ent : origins->get_array()) {
127
+ couchbase::operations::rbac::origin origin{};
128
+ origin.type = ent.at("type").get_string();
129
+ if (origin.type == "user") {
130
+ has_user_origin = true;
135
131
  }
136
- }
137
- {
138
- const auto* collection = entry.find("collection_name");
139
- if (collection != nullptr && !collection->get_string().empty()) {
140
- role.collection = collection->get_string();
132
+ const auto* name = ent.find("name");
133
+ if (name != nullptr) {
134
+ origin.name = name->get_string();
141
135
  }
136
+ role.origins.push_back(origin);
142
137
  }
143
- {
144
- const auto* origins = entry.find("origins");
145
- if (origins != nullptr) {
146
- bool has_user_origin = false;
147
- for (const auto& ent : origins->get_array()) {
148
- couchbase::operations::rbac::origin origin{};
149
- origin.type = ent.at("type").get_string();
150
- if (origin.type == "user") {
151
- has_user_origin = true;
152
- }
153
- const auto* name = ent.find("name");
154
- if (name != nullptr) {
155
- origin.name = name->get_string();
156
- }
157
- role.origins.push_back(origin);
158
- }
159
- if (has_user_origin) {
160
- result.roles.push_back(role);
161
- }
162
- } else {
163
- result.roles.push_back(role);
164
- }
138
+ if (has_user_origin) {
139
+ result.roles.push_back(role);
165
140
  }
166
- result.effective_roles.push_back(role);
141
+ } else {
142
+ result.roles.push_back(role);
167
143
  }
144
+ result.effective_roles.push_back(role);
168
145
  }
169
146
  }
170
147
  return result;