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

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -44,7 +44,7 @@ struct bucket_update_request {
44
44
 
45
45
  bucket_settings bucket{};
46
46
 
47
- [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context&)
47
+ [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context& /* context */) const
48
48
  {
49
49
  encoded.method = "POST";
50
50
  encoded.path = fmt::format("/pools/default/buckets/{}", bucket.name);
@@ -105,23 +105,23 @@ struct bucket_update_request {
105
105
  };
106
106
 
107
107
  bucket_update_response
108
- make_response(error_context::http&& ctx, bucket_update_request& /* request */, bucket_update_request::encoded_response_type&& encoded)
108
+ make_response(error_context::http&& ctx, const bucket_update_request& /* request */, bucket_update_request::encoded_response_type&& encoded)
109
109
  {
110
- bucket_update_response response{ ctx };
110
+ bucket_update_response response{ std::move(ctx) };
111
111
  if (!response.ctx.ec) {
112
112
  switch (encoded.status_code) {
113
113
  case 404:
114
- response.ctx.ec = std::make_error_code(error::common_errc::bucket_not_found);
114
+ response.ctx.ec = error::common_errc::bucket_not_found;
115
115
  break;
116
116
  case 400: {
117
117
  tao::json::value payload{};
118
118
  try {
119
119
  payload = tao::json::from_string(encoded.body);
120
- } catch (tao::json::pegtl::parse_error& e) {
121
- response.ctx.ec = std::make_error_code(error::common_errc::parsing_failure);
120
+ } catch (const tao::json::pegtl::parse_error& e) {
121
+ response.ctx.ec = error::common_errc::parsing_failure;
122
122
  return response;
123
123
  }
124
- response.ctx.ec = std::make_error_code(error::common_errc::invalid_argument);
124
+ response.ctx.ec = error::common_errc::invalid_argument;
125
125
  auto* errors = payload.find("errors");
126
126
  if (errors != nullptr) {
127
127
  std::vector<std::string> error_list{};
@@ -137,7 +137,7 @@ make_response(error_context::http&& ctx, bucket_update_request& /* request */, b
137
137
  case 202:
138
138
  break;
139
139
  default:
140
- response.ctx.ec = std::make_error_code(error::common_errc::internal_server_failure);
140
+ response.ctx.ec = error::common_errc::internal_server_failure;
141
141
  break;
142
142
  }
143
143
  }
@@ -39,7 +39,7 @@ struct cluster_developer_preview_enable_request {
39
39
  std::chrono::milliseconds timeout{ timeout_defaults::management_timeout };
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 */) const
43
43
  {
44
44
  encoded.method = "POST";
45
45
  encoded.headers["content-type"] = "application/x-www-form-urlencoded";
@@ -50,13 +50,13 @@ struct cluster_developer_preview_enable_request {
50
50
  };
51
51
 
52
52
  cluster_developer_preview_enable_response
53
- make_response(error_context::http&& ctx, cluster_developer_preview_enable_request&, scope_get_all_request::encoded_response_type&& encoded)
53
+ make_response(error_context::http&& ctx,
54
+ const cluster_developer_preview_enable_request& /* request */,
55
+ scope_get_all_request::encoded_response_type&& encoded)
54
56
  {
55
- cluster_developer_preview_enable_response response{ ctx };
56
- if (!response.ctx.ec) {
57
- if (encoded.status_code != 200) {
58
- response.ctx.ec = std::make_error_code(error::common_errc::internal_server_failure);
59
- }
57
+ cluster_developer_preview_enable_response response{ std::move(ctx) };
58
+ if (!response.ctx.ec && encoded.status_code != 200) {
59
+ response.ctx.ec = error::common_errc::internal_server_failure;
60
60
  }
61
61
  return response;
62
62
  }
@@ -46,7 +46,7 @@ struct collection_create_request {
46
46
  std::chrono::milliseconds timeout{ timeout_defaults::management_timeout };
47
47
  std::string client_context_id{ uuid::to_string(uuid::random()) };
48
48
 
49
- [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context&)
49
+ [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context& /* context */) const
50
50
  {
51
51
  encoded.method = "POST";
52
52
  encoded.path = fmt::format("/pools/default/buckets/{}/scopes/{}/collections", bucket_name, scope_name);
@@ -61,42 +61,42 @@ struct collection_create_request {
61
61
 
62
62
  collection_create_response
63
63
  make_response(error_context::http&& ctx,
64
- collection_create_request& /* request */,
64
+ const collection_create_request& /* request */,
65
65
  collection_create_request::encoded_response_type&& encoded)
66
66
  {
67
- collection_create_response response{ ctx };
67
+ collection_create_response response{ std::move(ctx) };
68
68
  if (!response.ctx.ec) {
69
69
  switch (encoded.status_code) {
70
70
  case 400: {
71
71
  std::regex collection_exists("Collection with name .+ already exists");
72
72
  if (std::regex_search(encoded.body, collection_exists)) {
73
- response.ctx.ec = std::make_error_code(error::management_errc::collection_exists);
73
+ response.ctx.ec = error::management_errc::collection_exists;
74
74
  } else if (encoded.body.find("Not allowed on this version of cluster") != std::string::npos) {
75
- response.ctx.ec = std::make_error_code(error::common_errc::feature_not_available);
75
+ response.ctx.ec = error::common_errc::feature_not_available;
76
76
  } else {
77
- response.ctx.ec = std::make_error_code(error::common_errc::invalid_argument);
77
+ response.ctx.ec = error::common_errc::invalid_argument;
78
78
  }
79
79
  } break;
80
80
  case 404: {
81
81
  std::regex scope_not_found("Scope with name .+ is not found");
82
82
  if (std::regex_search(encoded.body, scope_not_found)) {
83
- response.ctx.ec = std::make_error_code(error::common_errc::scope_not_found);
83
+ response.ctx.ec = error::common_errc::scope_not_found;
84
84
  } else {
85
- response.ctx.ec = std::make_error_code(error::common_errc::bucket_not_found);
85
+ response.ctx.ec = error::common_errc::bucket_not_found;
86
86
  }
87
87
  } break;
88
88
  case 200: {
89
89
  tao::json::value payload{};
90
90
  try {
91
91
  payload = tao::json::from_string(encoded.body);
92
- } catch (tao::json::pegtl::parse_error& e) {
93
- response.ctx.ec = std::make_error_code(error::common_errc::parsing_failure);
92
+ } catch (const tao::json::pegtl::parse_error& e) {
93
+ response.ctx.ec = error::common_errc::parsing_failure;
94
94
  return response;
95
95
  }
96
96
  response.uid = std::stoull(payload.at("uid").get_string(), 0, 16);
97
97
  } break;
98
98
  default:
99
- response.ctx.ec = std::make_error_code(error::common_errc::internal_server_failure);
99
+ response.ctx.ec = error::common_errc::internal_server_failure;
100
100
  break;
101
101
  }
102
102
  }
@@ -47,7 +47,7 @@ struct collection_drop_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 = "DELETE";
53
53
  encoded.path = fmt::format("/pools/default/buckets/{}/scopes/{}/collections/{}", bucket_name, scope_name, collection_name);
@@ -56,37 +56,39 @@ struct collection_drop_request {
56
56
  };
57
57
 
58
58
  collection_drop_response
59
- make_response(error_context::http&& ctx, collection_drop_request& /* request */, collection_drop_request::encoded_response_type&& encoded)
59
+ make_response(error_context::http&& ctx,
60
+ const collection_drop_request& /* request */,
61
+ collection_drop_request::encoded_response_type&& encoded)
60
62
  {
61
- collection_drop_response response{ ctx };
63
+ collection_drop_response response{ std::move(ctx) };
62
64
  if (!response.ctx.ec) {
63
65
  switch (encoded.status_code) {
64
66
  case 400:
65
- response.ctx.ec = std::make_error_code(error::common_errc::unsupported_operation);
67
+ response.ctx.ec = error::common_errc::unsupported_operation;
66
68
  break;
67
69
  case 404: {
68
70
  std::regex scope_not_found("Scope with name .+ is not found");
69
71
  std::regex collection_not_found("Collection with name .+ is not found");
70
72
  if (std::regex_search(encoded.body, collection_not_found)) {
71
- response.ctx.ec = std::make_error_code(error::common_errc::collection_not_found);
73
+ response.ctx.ec = error::common_errc::collection_not_found;
72
74
  } else if (std::regex_search(encoded.body, scope_not_found)) {
73
- response.ctx.ec = std::make_error_code(error::common_errc::scope_not_found);
75
+ response.ctx.ec = error::common_errc::scope_not_found;
74
76
  } else {
75
- response.ctx.ec = std::make_error_code(error::common_errc::bucket_not_found);
77
+ response.ctx.ec = error::common_errc::bucket_not_found;
76
78
  }
77
79
  } break;
78
80
  case 200: {
79
81
  tao::json::value payload{};
80
82
  try {
81
83
  payload = tao::json::from_string(encoded.body);
82
- } catch (tao::json::pegtl::parse_error& e) {
83
- response.ctx.ec = std::make_error_code(error::common_errc::parsing_failure);
84
+ } catch (const tao::json::pegtl::parse_error& e) {
85
+ response.ctx.ec = error::common_errc::parsing_failure;
84
86
  return response;
85
87
  }
86
88
  response.uid = std::stoull(payload.at("uid").get_string(), 0, 16);
87
89
  } break;
88
90
  default:
89
- response.ctx.ec = std::make_error_code(error::common_errc::internal_server_failure);
91
+ response.ctx.ec = error::common_errc::internal_server_failure;
90
92
  break;
91
93
  }
92
94
  }
@@ -45,7 +45,7 @@ struct collections_manifest_get_request {
45
45
  std::chrono::milliseconds timeout{ timeout_defaults::key_value_timeout };
46
46
  io::retry_context<io::retry_strategy::best_effort> retries{ true };
47
47
 
48
- [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, mcbp_context&&)
48
+ [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, mcbp_context&& /* context */) const
49
49
  {
50
50
  encoded.opaque(opaque);
51
51
  return {};
@@ -54,10 +54,10 @@ struct collections_manifest_get_request {
54
54
 
55
55
  collections_manifest_get_response
56
56
  make_response(error_context::key_value&& ctx,
57
- collections_manifest_get_request&,
57
+ const collections_manifest_get_request& /* request */,
58
58
  collections_manifest_get_request::encoded_response_type&& encoded)
59
59
  {
60
- collections_manifest_get_response response{ ctx };
60
+ collections_manifest_get_response response{ std::move(ctx) };
61
61
  if (!response.ctx.ec) {
62
62
  response.manifest = encoded.body().manifest();
63
63
  }
@@ -27,8 +27,8 @@ struct design_document {
27
27
 
28
28
  struct view {
29
29
  std::string name;
30
- std::optional<std::string> map;
31
- std::optional<std::string> reduce;
30
+ std::optional<std::string> map{};
31
+ std::optional<std::string> reduce{};
32
32
  };
33
33
 
34
34
  std::string rev;
@@ -79,18 +79,16 @@ struct traits<couchbase::operations::analytics_response_payload> {
79
79
  result.meta_data.request_id = v.at("requestID").get_string();
80
80
  result.meta_data.client_context_id = v.at("clientContextID").get_string();
81
81
  result.meta_data.status = v.at("status").get_string();
82
- const auto s = v.find("signature");
83
- if (s != nullptr) {
82
+
83
+ if (const auto* s = v.find("signature"); s != nullptr) {
84
84
  result.meta_data.signature = tao::json::to_string(*s);
85
85
  }
86
86
 
87
- const auto p = v.find("profile");
88
- if (p != nullptr) {
87
+ if (const auto* p = v.find("profile"); p != nullptr) {
89
88
  result.meta_data.profile = tao::json::to_string(*p);
90
89
  }
91
90
 
92
- const auto m = v.find("metrics");
93
- if (m != nullptr) {
91
+ if (const auto* m = v.find("metrics"); m != nullptr) {
94
92
  result.meta_data.metrics.result_count = m->at("resultCount").get_unsigned();
95
93
  result.meta_data.metrics.result_size = m->at("resultSize").get_unsigned();
96
94
  result.meta_data.metrics.elapsed_time = m->at("elapsedTime").get_string();
@@ -101,8 +99,7 @@ struct traits<couchbase::operations::analytics_response_payload> {
101
99
  result.meta_data.metrics.warning_count = m->template optional<std::uint64_t>("warningCount");
102
100
  }
103
101
 
104
- const auto e = v.find("errors");
105
- if (e != nullptr) {
102
+ if (const auto* e = v.find("errors"); e != nullptr) {
106
103
  std::vector<couchbase::operations::analytics_response_payload::analytics_problem> problems{};
107
104
  for (auto& err : e->get_array()) {
108
105
  couchbase::operations::analytics_response_payload::analytics_problem problem;
@@ -113,8 +110,7 @@ struct traits<couchbase::operations::analytics_response_payload> {
113
110
  result.meta_data.errors.emplace(problems);
114
111
  }
115
112
 
116
- const auto w = v.find("warnings");
117
- if (w != nullptr) {
113
+ if (const auto* w = v.find("warnings"); w != nullptr) {
118
114
  std::vector<couchbase::operations::analytics_response_payload::analytics_problem> problems{};
119
115
  for (auto& warn : w->get_array()) {
120
116
  couchbase::operations::analytics_response_payload::analytics_problem problem;
@@ -124,8 +120,8 @@ struct traits<couchbase::operations::analytics_response_payload> {
124
120
  }
125
121
  result.meta_data.warnings.emplace(problems);
126
122
  }
127
- const auto r = v.find("results");
128
- if (r != nullptr) {
123
+
124
+ if (const auto* r = v.find("results"); r != nullptr) {
129
125
  result.rows.reserve(result.meta_data.metrics.result_count);
130
126
  for (auto& row : r->get_array()) {
131
127
  result.rows.emplace_back(tao::json::to_string(row));
@@ -178,13 +174,13 @@ struct analytics_request {
178
174
  { "client_context_id", client_context_id },
179
175
  { "timeout", fmt::format("{}ms", timeout.count()) } };
180
176
  if (positional_parameters.empty()) {
181
- for (auto& param : named_parameters) {
182
- Expects(param.first.empty() == false);
183
- std::string key = param.first;
177
+ for (const auto& [name, value] : named_parameters) {
178
+ Expects(name.empty() == false);
179
+ std::string key = name;
184
180
  if (key[0] != '$') {
185
181
  key.insert(key.begin(), '$');
186
182
  }
187
- body[key] = param.second;
183
+ body[key] = value;
188
184
  }
189
185
  } else {
190
186
  body["args"] = positional_parameters;
@@ -204,14 +200,11 @@ struct analytics_request {
204
200
  }
205
201
  if (scope_qualifier) {
206
202
  body["query_context"] = scope_qualifier;
207
- } else if (scope_name) {
208
- if (bucket_name) {
209
- // for analytics bucket_name.scope_name is quoted as a single unit (unlike n1ql query)
210
- body["query_context"] = fmt::format("default:`{}.{}`", *bucket_name, *scope_name);
211
- }
203
+ } else if (scope_name && bucket_name) {
204
+ body["query_context"] = fmt::format("default:`{}`.`{}`", *bucket_name, *scope_name);
212
205
  }
213
- for (auto& param : raw) {
214
- body[param.first] = param.second;
206
+ for (const auto& [name, value] : raw) {
207
+ body[name] = value;
215
208
  }
216
209
  encoded.type = type;
217
210
  encoded.headers["content-type"] = "application/json";
@@ -232,16 +225,16 @@ struct analytics_request {
232
225
  };
233
226
 
234
227
  analytics_response
235
- make_response(error_context::analytics&& ctx, analytics_request& request, analytics_request::encoded_response_type&& encoded)
228
+ make_response(error_context::analytics&& ctx, const analytics_request& request, analytics_request::encoded_response_type&& encoded)
236
229
  {
237
- analytics_response response{ ctx };
230
+ analytics_response response{ std::move(ctx) };
238
231
  response.ctx.statement = request.statement;
239
232
  response.ctx.parameters = request.body_str;
240
233
  if (!response.ctx.ec) {
241
234
  try {
242
235
  response.payload = tao::json::from_string(encoded.body).as<analytics_response_payload>();
243
- } catch (tao::json::pegtl::parse_error& e) {
244
- response.ctx.ec = std::make_error_code(error::common_errc::parsing_failure);
236
+ } catch (const tao::json::pegtl::parse_error&) {
237
+ response.ctx.ec = error::common_errc::parsing_failure;
245
238
  return response;
246
239
  }
247
240
  Expects(response.payload.meta_data.client_context_id == request.client_context_id);
@@ -290,23 +283,23 @@ make_response(error_context::analytics&& ctx, analytics_request& request, analyt
290
283
  }
291
284
  }
292
285
  if (compilation_failure) {
293
- response.ctx.ec = std::make_error_code(error::analytics_errc::compilation_failure);
286
+ response.ctx.ec = error::analytics_errc::compilation_failure;
294
287
  } else if (link_not_found) {
295
- response.ctx.ec = std::make_error_code(error::analytics_errc::link_not_found);
288
+ response.ctx.ec = error::analytics_errc::link_not_found;
296
289
  } else if (dataset_not_found) {
297
- response.ctx.ec = std::make_error_code(error::analytics_errc::dataset_not_found);
290
+ response.ctx.ec = error::analytics_errc::dataset_not_found;
298
291
  } else if (dataverse_not_found) {
299
- response.ctx.ec = std::make_error_code(error::analytics_errc::dataverse_not_found);
292
+ response.ctx.ec = error::analytics_errc::dataverse_not_found;
300
293
  } else if (server_timeout) {
301
- response.ctx.ec = std::make_error_code(error::common_errc::unambiguous_timeout);
294
+ response.ctx.ec = error::common_errc::unambiguous_timeout;
302
295
  } else if (dataset_exists) {
303
- response.ctx.ec = std::make_error_code(error::analytics_errc::dataset_exists);
296
+ response.ctx.ec = error::analytics_errc::dataset_exists;
304
297
  } else if (dataverse_exists) {
305
- response.ctx.ec = std::make_error_code(error::analytics_errc::dataverse_exists);
298
+ response.ctx.ec = error::analytics_errc::dataverse_exists;
306
299
  } else if (job_queue_is_full) {
307
- response.ctx.ec = std::make_error_code(error::analytics_errc::job_queue_full);
300
+ response.ctx.ec = error::analytics_errc::job_queue_full;
308
301
  } else {
309
- response.ctx.ec = std::make_error_code(error::common_errc::internal_server_failure);
302
+ response.ctx.ec = error::common_errc::internal_server_failure;
310
303
  }
311
304
  }
312
305
  }
@@ -43,7 +43,7 @@ struct append_request {
43
43
  std::chrono::milliseconds timeout{ timeout_defaults::key_value_timeout };
44
44
  io::retry_context<io::retry_strategy::best_effort> retries{ false };
45
45
 
46
- [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, mcbp_context&&)
46
+ [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, mcbp_context&& /* context */) const
47
47
  {
48
48
  encoded.opaque(opaque);
49
49
  encoded.partition(partition);
@@ -57,9 +57,9 @@ struct append_request {
57
57
  };
58
58
 
59
59
  append_response
60
- make_response(error_context::key_value&& ctx, append_request& request, append_request::encoded_response_type&& encoded)
60
+ make_response(error_context::key_value&& ctx, const append_request& request, append_request::encoded_response_type&& encoded)
61
61
  {
62
- append_response response{ ctx };
62
+ append_response response{ std::move(ctx) };
63
63
  if (!response.ctx.ec) {
64
64
  response.cas = encoded.cas();
65
65
  response.token = encoded.body().token();
@@ -47,7 +47,7 @@ struct decrement_request {
47
47
  io::retry_context<io::retry_strategy::best_effort> retries{ false };
48
48
  bool preserve_expiry{ false };
49
49
 
50
- [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, mcbp_context&&)
50
+ [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, mcbp_context&& /* context */) const
51
51
  {
52
52
  encoded.opaque(opaque);
53
53
  encoded.partition(partition);
@@ -71,9 +71,9 @@ struct decrement_request {
71
71
  };
72
72
 
73
73
  decrement_response
74
- make_response(error_context::key_value&& ctx, decrement_request& request, decrement_request::encoded_response_type&& encoded)
74
+ make_response(error_context::key_value&& ctx, const decrement_request& request, decrement_request::encoded_response_type&& encoded)
75
75
  {
76
- decrement_response response{ ctx };
76
+ decrement_response response{ std::move(ctx) };
77
77
  if (!ctx.ec) {
78
78
  response.cas = encoded.cas();
79
79
  response.content = encoded.body().content();
@@ -43,7 +43,7 @@ struct exists_request {
43
43
  std::chrono::milliseconds timeout{ timeout_defaults::key_value_timeout };
44
44
  io::retry_context<io::retry_strategy::best_effort> retries{ false };
45
45
 
46
- [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, mcbp_context&&)
46
+ [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, mcbp_context&& /* context */) const
47
47
  {
48
48
  encoded.opaque(opaque);
49
49
  encoded.body().id(partition, id);
@@ -52,7 +52,7 @@ struct exists_request {
52
52
  };
53
53
 
54
54
  exists_response
55
- make_response(error_context::key_value&& ctx, exists_request& request, exists_request::encoded_response_type&& encoded)
55
+ make_response(error_context::key_value&& ctx, const exists_request& request, exists_request::encoded_response_type&& encoded)
56
56
  {
57
57
  exists_response response{ ctx, request.partition };
58
58
  if (!ctx.ec) {
@@ -42,7 +42,7 @@ struct get_request {
42
42
  std::chrono::milliseconds timeout{ timeout_defaults::key_value_timeout };
43
43
  io::retry_context<io::retry_strategy::best_effort> retries{ true };
44
44
 
45
- [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, mcbp_context&&)
45
+ [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, mcbp_context&& /* context */) const
46
46
  {
47
47
  encoded.opaque(opaque);
48
48
  encoded.partition(partition);
@@ -52,9 +52,9 @@ struct get_request {
52
52
  };
53
53
 
54
54
  get_response
55
- make_response(error_context::key_value&& ctx, get_request&, get_request::encoded_response_type&& encoded)
55
+ make_response(error_context::key_value&& ctx, const get_request& /* request */, get_request::encoded_response_type&& encoded)
56
56
  {
57
- get_response response{ ctx };
57
+ get_response response{ std::move(ctx) };
58
58
  if (!response.ctx.ec) {
59
59
  response.value = std::move(encoded.body().value());
60
60
  response.cas = encoded.cas();