couchbase 3.0.1 → 3.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (140) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +73 -4
  3. data/ext/build_config.hxx.in +2 -0
  4. data/ext/build_version.hxx.in +11 -8
  5. data/ext/cmake/BuildTracing.cmake +1 -1
  6. data/ext/cmake/CompilerWarnings.cmake +5 -0
  7. data/ext/cmake/Testing.cmake +3 -6
  8. data/ext/couchbase/bucket.hxx +9 -1
  9. data/ext/couchbase/cbsasl/client.h +1 -1
  10. data/ext/couchbase/cluster.hxx +89 -6
  11. data/ext/couchbase/configuration.hxx +2 -0
  12. data/ext/couchbase/couchbase.cxx +1647 -507
  13. data/ext/couchbase/diagnostics.hxx +0 -3
  14. data/ext/couchbase/io/dns_client.hxx +2 -2
  15. data/ext/couchbase/io/http_command.hxx +6 -3
  16. data/ext/couchbase/io/http_session.hxx +14 -18
  17. data/ext/couchbase/io/http_session_manager.hxx +83 -2
  18. data/ext/couchbase/io/mcbp_command.hxx +4 -1
  19. data/ext/couchbase/io/mcbp_context.hxx +37 -0
  20. data/ext/couchbase/io/mcbp_session.hxx +91 -30
  21. data/ext/couchbase/operations.hxx +5 -0
  22. data/ext/couchbase/operations/analytics_dataset_create.hxx +3 -2
  23. data/ext/couchbase/operations/analytics_dataset_drop.hxx +3 -2
  24. data/ext/couchbase/operations/analytics_dataset_get_all.hxx +3 -2
  25. data/ext/couchbase/operations/analytics_dataverse_create.hxx +3 -2
  26. data/ext/couchbase/operations/analytics_dataverse_drop.hxx +3 -2
  27. data/ext/couchbase/operations/analytics_get_pending_mutations.hxx +3 -2
  28. data/ext/couchbase/operations/analytics_index_create.hxx +3 -2
  29. data/ext/couchbase/operations/analytics_index_drop.hxx +3 -2
  30. data/ext/couchbase/operations/analytics_index_get_all.hxx +5 -2
  31. data/ext/couchbase/operations/analytics_link_connect.hxx +3 -2
  32. data/ext/couchbase/operations/analytics_link_disconnect.hxx +3 -2
  33. data/ext/couchbase/operations/bucket_create.hxx +3 -2
  34. data/ext/couchbase/operations/bucket_drop.hxx +3 -2
  35. data/ext/couchbase/operations/bucket_flush.hxx +3 -2
  36. data/ext/couchbase/operations/bucket_get.hxx +3 -2
  37. data/ext/couchbase/operations/bucket_get_all.hxx +3 -2
  38. data/ext/couchbase/operations/bucket_update.hxx +3 -2
  39. data/ext/couchbase/operations/cluster_developer_preview_enable.hxx +3 -2
  40. data/ext/couchbase/operations/collection_create.hxx +3 -2
  41. data/ext/couchbase/operations/collection_drop.hxx +3 -2
  42. data/ext/couchbase/operations/collections_manifest_get.hxx +3 -2
  43. data/ext/couchbase/operations/document_analytics.hxx +3 -2
  44. data/ext/couchbase/operations/document_append.hxx +77 -0
  45. data/ext/couchbase/operations/document_decrement.hxx +3 -2
  46. data/ext/couchbase/operations/document_exists.hxx +3 -2
  47. data/ext/couchbase/operations/document_get.hxx +3 -2
  48. data/ext/couchbase/operations/document_get_and_lock.hxx +3 -2
  49. data/ext/couchbase/operations/document_get_and_touch.hxx +3 -2
  50. data/ext/couchbase/operations/document_get_projected.hxx +3 -2
  51. data/ext/couchbase/operations/document_increment.hxx +3 -2
  52. data/ext/couchbase/operations/document_insert.hxx +3 -2
  53. data/ext/couchbase/operations/document_lookup_in.hxx +8 -2
  54. data/ext/couchbase/operations/document_mutate_in.hxx +13 -2
  55. data/ext/couchbase/operations/document_prepend.hxx +77 -0
  56. data/ext/couchbase/operations/document_query.hxx +3 -2
  57. data/ext/couchbase/operations/document_remove.hxx +5 -2
  58. data/ext/couchbase/operations/document_replace.hxx +3 -2
  59. data/ext/couchbase/operations/document_search.hxx +3 -2
  60. data/ext/couchbase/operations/document_touch.hxx +3 -2
  61. data/ext/couchbase/operations/document_unlock.hxx +3 -2
  62. data/ext/couchbase/operations/document_upsert.hxx +3 -2
  63. data/ext/couchbase/operations/document_view.hxx +3 -2
  64. data/ext/couchbase/operations/group_drop.hxx +3 -2
  65. data/ext/couchbase/operations/group_get.hxx +3 -2
  66. data/ext/couchbase/operations/group_get_all.hxx +3 -2
  67. data/ext/couchbase/operations/group_upsert.hxx +3 -2
  68. data/ext/couchbase/operations/http_noop.hxx +78 -0
  69. data/ext/couchbase/operations/mcbp_noop.hxx +61 -0
  70. data/ext/couchbase/operations/query_index_build_deferred.hxx +3 -2
  71. data/ext/couchbase/operations/query_index_create.hxx +3 -2
  72. data/ext/couchbase/operations/query_index_drop.hxx +3 -2
  73. data/ext/couchbase/operations/query_index_get_all.hxx +3 -2
  74. data/ext/couchbase/operations/role_get_all.hxx +3 -2
  75. data/ext/couchbase/operations/scope_create.hxx +3 -2
  76. data/ext/couchbase/operations/scope_drop.hxx +3 -2
  77. data/ext/couchbase/operations/scope_get_all.hxx +3 -2
  78. data/ext/couchbase/operations/search_get_stats.hxx +3 -2
  79. data/ext/couchbase/operations/search_index_analyze_document.hxx +3 -2
  80. data/ext/couchbase/operations/search_index_control_ingest.hxx +3 -2
  81. data/ext/couchbase/operations/search_index_control_plan_freeze.hxx +3 -2
  82. data/ext/couchbase/operations/search_index_control_query.hxx +3 -2
  83. data/ext/couchbase/operations/search_index_drop.hxx +3 -2
  84. data/ext/couchbase/operations/search_index_get.hxx +3 -2
  85. data/ext/couchbase/operations/search_index_get_all.hxx +3 -2
  86. data/ext/couchbase/operations/search_index_get_documents_count.hxx +3 -2
  87. data/ext/couchbase/operations/search_index_get_stats.hxx +3 -2
  88. data/ext/couchbase/operations/search_index_upsert.hxx +3 -2
  89. data/ext/couchbase/operations/user_drop.hxx +3 -2
  90. data/ext/couchbase/operations/user_get.hxx +3 -2
  91. data/ext/couchbase/operations/user_get_all.hxx +3 -2
  92. data/ext/couchbase/operations/user_upsert.hxx +3 -2
  93. data/ext/couchbase/operations/view_index_drop.hxx +3 -2
  94. data/ext/couchbase/operations/view_index_get.hxx +3 -2
  95. data/ext/couchbase/operations/view_index_get_all.hxx +3 -2
  96. data/ext/couchbase/operations/view_index_upsert.hxx +3 -2
  97. data/ext/couchbase/platform/terminate_handler.cc +5 -2
  98. data/ext/couchbase/protocol/client_opcode.hxx +368 -0
  99. data/ext/couchbase/protocol/cmd_append.hxx +145 -0
  100. data/ext/couchbase/protocol/cmd_hello.hxx +1 -0
  101. data/ext/couchbase/protocol/cmd_lookup_in.hxx +11 -3
  102. data/ext/couchbase/protocol/cmd_mutate_in.hxx +46 -4
  103. data/ext/couchbase/protocol/cmd_noop.hxx +82 -0
  104. data/ext/couchbase/protocol/cmd_prepend.hxx +145 -0
  105. data/ext/couchbase/protocol/durability_level.hxx +16 -0
  106. data/ext/couchbase/protocol/hello_feature.hxx +9 -0
  107. data/ext/couchbase/protocol/unsigned_leb128.h +2 -2
  108. data/ext/couchbase/service_type.hxx +1 -1
  109. data/ext/couchbase/version.hxx +18 -4
  110. data/ext/extconf.rb +9 -6
  111. data/ext/test/CMakeLists.txt +5 -0
  112. data/ext/test/test_helper.hxx +3 -3
  113. data/ext/test/test_helper_native.hxx +2 -5
  114. data/ext/test/test_native_binary_operations.cxx +186 -0
  115. data/ext/test/test_native_diagnostics.cxx +54 -3
  116. data/ext/test/test_ruby_trivial_crud.cxx +1 -1
  117. data/lib/couchbase.rb +1 -0
  118. data/lib/couchbase/analytics_options.rb +1 -71
  119. data/lib/couchbase/binary_collection.rb +60 -22
  120. data/lib/couchbase/binary_collection_options.rb +0 -76
  121. data/lib/couchbase/bucket.rb +40 -36
  122. data/lib/couchbase/cluster.rb +89 -156
  123. data/lib/couchbase/collection.rb +290 -72
  124. data/lib/couchbase/collection_options.rb +30 -243
  125. data/lib/couchbase/datastructures/couchbase_list.rb +5 -16
  126. data/lib/couchbase/datastructures/couchbase_map.rb +5 -16
  127. data/lib/couchbase/datastructures/couchbase_queue.rb +5 -16
  128. data/lib/couchbase/datastructures/couchbase_set.rb +5 -16
  129. data/lib/couchbase/diagnostics.rb +181 -0
  130. data/lib/couchbase/json_transcoder.rb +1 -1
  131. data/lib/couchbase/{common_options.rb → logger.rb} +24 -11
  132. data/lib/couchbase/management/query_index_manager.rb +1 -1
  133. data/lib/couchbase/management/user_manager.rb +3 -0
  134. data/lib/couchbase/options.rb +2094 -0
  135. data/lib/couchbase/query_options.rb +1 -144
  136. data/lib/couchbase/scope.rb +8 -25
  137. data/lib/couchbase/search_options.rb +0 -93
  138. data/lib/couchbase/version.rb +20 -1
  139. data/lib/couchbase/view_options.rb +1 -91
  140. metadata +19 -7
@@ -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
- void encode_to(encoded_request_type& encoded, http_context&)
54
+ [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context&)
55
55
  {
56
56
  encoded.headers["content-type"] = "application/json";
57
57
  std::string keyspace = fmt::format("`{}`", bucket_name);
@@ -68,11 +68,12 @@ struct query_index_drop_request {
68
68
  encoded.method = "POST";
69
69
  encoded.path = "/query/service";
70
70
  encoded.body = tao::json::to_string(body);
71
+ return {};
71
72
  }
72
73
  };
73
74
 
74
75
  query_index_drop_response
75
- make_response(std::error_code ec, query_index_drop_request& request, query_index_drop_request::encoded_response_type encoded)
76
+ make_response(std::error_code ec, query_index_drop_request& request, query_index_drop_request::encoded_response_type&& encoded)
76
77
  {
77
78
  query_index_drop_response response{ request.client_context_id, ec };
78
79
  if (!ec) {
@@ -56,7 +56,7 @@ struct query_index_get_all_request {
56
56
  std::string bucket_name;
57
57
  std::chrono::milliseconds timeout{ timeout_defaults::management_timeout };
58
58
 
59
- void encode_to(encoded_request_type& encoded, http_context&)
59
+ [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context&)
60
60
  {
61
61
  encoded.headers["content-type"] = "application/json";
62
62
  tao::json::value body{
@@ -70,11 +70,12 @@ struct query_index_get_all_request {
70
70
  encoded.method = "POST";
71
71
  encoded.path = "/query/service";
72
72
  encoded.body = tao::json::to_string(body);
73
+ return {};
73
74
  }
74
75
  };
75
76
 
76
77
  query_index_get_all_response
77
- make_response(std::error_code ec, query_index_get_all_request& request, query_index_get_all_request::encoded_response_type encoded)
78
+ make_response(std::error_code ec, query_index_get_all_request& request, query_index_get_all_request::encoded_response_type&& encoded)
78
79
  {
79
80
  query_index_get_all_response response{ request.client_context_id, ec };
80
81
  if (!ec) {
@@ -42,16 +42,17 @@ struct role_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
- void encode_to(encoded_request_type& encoded, http_context&)
45
+ [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context&)
46
46
  {
47
47
  encoded.method = "GET";
48
48
  encoded.path = "/settings/rbac/roles";
49
49
  encoded.headers["content-type"] = "application/x-www-form-urlencoded";
50
+ return {};
50
51
  }
51
52
  };
52
53
 
53
54
  role_get_all_response
54
- make_response(std::error_code ec, role_get_all_request& request, role_get_all_request::encoded_response_type encoded)
55
+ make_response(std::error_code ec, role_get_all_request& request, role_get_all_request::encoded_response_type&& encoded)
55
56
  {
56
57
  role_get_all_response response{ request.client_context_id, ec };
57
58
  if (!ec) {
@@ -44,17 +44,18 @@ struct scope_create_request {
44
44
  std::chrono::milliseconds timeout{ timeout_defaults::management_timeout };
45
45
  std::string client_context_id{ uuid::to_string(uuid::random()) };
46
46
 
47
- void encode_to(encoded_request_type& encoded, http_context&)
47
+ [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context&)
48
48
  {
49
49
  encoded.method = "POST";
50
50
  encoded.path = fmt::format("/pools/default/buckets/{}/collections", bucket_name);
51
51
  encoded.headers["content-type"] = "application/x-www-form-urlencoded";
52
52
  encoded.body = fmt::format("name={}", utils::string_codec::form_encode(scope_name));
53
+ return {};
53
54
  }
54
55
  };
55
56
 
56
57
  scope_create_response
57
- make_response(std::error_code ec, scope_create_request& request, scope_create_request::encoded_response_type encoded)
58
+ make_response(std::error_code ec, scope_create_request& request, scope_create_request::encoded_response_type&& encoded)
58
59
  {
59
60
  scope_create_response response{ request.client_context_id, ec };
60
61
  if (!ec) {
@@ -44,15 +44,16 @@ struct scope_drop_request {
44
44
  std::chrono::milliseconds timeout{ timeout_defaults::management_timeout };
45
45
  std::string client_context_id{ uuid::to_string(uuid::random()) };
46
46
 
47
- void encode_to(encoded_request_type& encoded, http_context&)
47
+ [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context&)
48
48
  {
49
49
  encoded.method = "DELETE";
50
50
  encoded.path = fmt::format("/pools/default/buckets/{}/collections/{}", bucket_name, scope_name);
51
+ return {};
51
52
  }
52
53
  };
53
54
 
54
55
  scope_drop_response
55
- make_response(std::error_code ec, scope_drop_request& request, scope_drop_request::encoded_response_type encoded)
56
+ make_response(std::error_code ec, scope_drop_request& request, scope_drop_request::encoded_response_type&& encoded)
56
57
  {
57
58
  scope_drop_response response{ request.client_context_id, ec };
58
59
  if (!ec) {
@@ -43,15 +43,16 @@ struct scope_get_all_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
- void encode_to(encoded_request_type& encoded, http_context&)
46
+ [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context&)
47
47
  {
48
48
  encoded.method = "GET";
49
49
  encoded.path = fmt::format("/pools/default/buckets/{}/collections", bucket_name);
50
+ return {};
50
51
  }
51
52
  };
52
53
 
53
54
  scope_get_all_response
54
- make_response(std::error_code ec, scope_get_all_request& request, scope_get_all_request::encoded_response_type encoded)
55
+ make_response(std::error_code ec, scope_get_all_request& request, scope_get_all_request::encoded_response_type&& encoded)
55
56
  {
56
57
  scope_get_all_response response{ request.client_context_id, ec };
57
58
  if (!ec) {
@@ -39,15 +39,16 @@ struct search_index_stats_request {
39
39
  std::string client_context_id{ uuid::to_string(uuid::random()) };
40
40
  std::chrono::milliseconds timeout{ timeout_defaults::management_timeout };
41
41
 
42
- void encode_to(encoded_request_type& encoded, http_context&)
42
+ [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context&)
43
43
  {
44
44
  encoded.method = "GET";
45
45
  encoded.path = "/api/nsstats";
46
+ return {};
46
47
  }
47
48
  };
48
49
 
49
50
  search_index_stats_response
50
- make_response(std::error_code ec, search_index_stats_request& request, search_index_stats_request::encoded_response_type encoded)
51
+ make_response(std::error_code ec, search_index_stats_request& request, search_index_stats_request::encoded_response_type&& encoded)
51
52
  {
52
53
  search_index_stats_response response{ request.client_context_id, ec };
53
54
  if (!ec) {
@@ -44,20 +44,21 @@ struct search_index_analyze_document_request {
44
44
  std::string index_name;
45
45
  std::string encoded_document;
46
46
 
47
- void encode_to(encoded_request_type& encoded, http_context&)
47
+ [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context&)
48
48
  {
49
49
  encoded.method = "POST";
50
50
  encoded.headers["cache-control"] = "no-cache";
51
51
  encoded.headers["content-type"] = "application/json";
52
52
  encoded.path = fmt::format("/api/index/{}/analyzeDoc", index_name);
53
53
  encoded.body = encoded_document;
54
+ return {};
54
55
  }
55
56
  };
56
57
 
57
58
  search_index_analyze_document_response
58
59
  make_response(std::error_code ec,
59
60
  search_index_analyze_document_request& request,
60
- search_index_analyze_document_request::encoded_response_type encoded)
61
+ search_index_analyze_document_request::encoded_response_type&& encoded)
61
62
  {
62
63
  search_index_analyze_document_response response{ request.client_context_id, ec };
63
64
  if (!ec) {
@@ -43,17 +43,18 @@ struct search_index_control_ingest_request {
43
43
  std::string index_name;
44
44
  bool pause;
45
45
 
46
- void encode_to(encoded_request_type& encoded, http_context&)
46
+ [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context&)
47
47
  {
48
48
  encoded.method = "POST";
49
49
  encoded.path = fmt::format("/api/index/{}/ingestControl/{}", index_name, pause ? "pause" : "resume");
50
+ return {};
50
51
  }
51
52
  };
52
53
 
53
54
  search_index_control_ingest_response
54
55
  make_response(std::error_code ec,
55
56
  search_index_control_ingest_request& request,
56
- search_index_control_ingest_request::encoded_response_type encoded)
57
+ search_index_control_ingest_request::encoded_response_type&& encoded)
57
58
  {
58
59
  search_index_control_ingest_response response{ request.client_context_id, ec };
59
60
  if (!ec) {
@@ -43,17 +43,18 @@ struct search_index_control_plan_freeze_request {
43
43
  std::string index_name;
44
44
  bool freeze;
45
45
 
46
- void encode_to(encoded_request_type& encoded, http_context&)
46
+ [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context&)
47
47
  {
48
48
  encoded.method = "POST";
49
49
  encoded.path = fmt::format("/api/index/{}/planFreezeControl/{}", index_name, freeze ? "freeze" : "unfreeze");
50
+ return {};
50
51
  }
51
52
  };
52
53
 
53
54
  search_index_control_plan_freeze_response
54
55
  make_response(std::error_code ec,
55
56
  search_index_control_plan_freeze_request& request,
56
- search_index_control_plan_freeze_request::encoded_response_type encoded)
57
+ search_index_control_plan_freeze_request::encoded_response_type&& encoded)
57
58
  {
58
59
  search_index_control_plan_freeze_response response{ request.client_context_id, ec };
59
60
  if (!ec) {
@@ -43,17 +43,18 @@ struct search_index_control_query_request {
43
43
  std::string index_name;
44
44
  bool allow;
45
45
 
46
- void encode_to(encoded_request_type& encoded, http_context&)
46
+ [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context&)
47
47
  {
48
48
  encoded.method = "POST";
49
49
  encoded.path = fmt::format("/api/index/{}/queryControl/{}", index_name, allow ? "allow" : "disallow");
50
+ return {};
50
51
  }
51
52
  };
52
53
 
53
54
  search_index_control_query_response
54
55
  make_response(std::error_code ec,
55
56
  search_index_control_query_request& request,
56
- search_index_control_query_request::encoded_response_type encoded)
57
+ search_index_control_query_request::encoded_response_type&& encoded)
57
58
  {
58
59
  search_index_control_query_response response{ request.client_context_id, ec };
59
60
  if (!ec) {
@@ -42,15 +42,16 @@ struct search_index_drop_request {
42
42
 
43
43
  std::string index_name;
44
44
 
45
- void encode_to(encoded_request_type& encoded, http_context&)
45
+ [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context&)
46
46
  {
47
47
  encoded.method = "DELETE";
48
48
  encoded.path = fmt::format("/api/index/{}", index_name);
49
+ return {};
49
50
  }
50
51
  };
51
52
 
52
53
  search_index_drop_response
53
- make_response(std::error_code ec, search_index_drop_request& request, search_index_drop_request::encoded_response_type encoded)
54
+ make_response(std::error_code ec, search_index_drop_request& request, search_index_drop_request::encoded_response_type&& encoded)
54
55
  {
55
56
  search_index_drop_response response{ request.client_context_id, ec };
56
57
  if (!ec) {
@@ -44,15 +44,16 @@ struct search_index_get_request {
44
44
 
45
45
  std::string index_name;
46
46
 
47
- void encode_to(encoded_request_type& encoded, http_context&)
47
+ [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context&)
48
48
  {
49
49
  encoded.method = "GET";
50
50
  encoded.path = fmt::format("/api/index/{}", index_name);
51
+ return {};
51
52
  }
52
53
  };
53
54
 
54
55
  search_index_get_response
55
- make_response(std::error_code ec, search_index_get_request& request, search_index_get_request::encoded_response_type encoded)
56
+ make_response(std::error_code ec, search_index_get_request& request, search_index_get_request::encoded_response_type&& encoded)
56
57
  {
57
58
  search_index_get_response response{ request.client_context_id, ec };
58
59
  if (!ec) {
@@ -44,15 +44,16 @@ struct search_index_get_all_request {
44
44
 
45
45
  std::string index_name;
46
46
 
47
- void encode_to(encoded_request_type& encoded, http_context&)
47
+ [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context&)
48
48
  {
49
49
  encoded.method = "GET";
50
50
  encoded.path = fmt::format("/api/index");
51
+ return {};
51
52
  }
52
53
  };
53
54
 
54
55
  search_index_get_all_response
55
- make_response(std::error_code ec, search_index_get_all_request& request, search_index_get_all_request::encoded_response_type encoded)
56
+ make_response(std::error_code ec, search_index_get_all_request& request, search_index_get_all_request::encoded_response_type&& encoded)
56
57
  {
57
58
  search_index_get_all_response response{ request.client_context_id, ec };
58
59
  if (!ec) {
@@ -43,17 +43,18 @@ struct search_index_get_documents_count_request {
43
43
 
44
44
  std::string index_name;
45
45
 
46
- void encode_to(encoded_request_type& encoded, http_context&)
46
+ [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context&)
47
47
  {
48
48
  encoded.method = "GET";
49
49
  encoded.path = fmt::format("/api/index/{}/count", index_name);
50
+ return {};
50
51
  }
51
52
  };
52
53
 
53
54
  search_index_get_documents_count_response
54
55
  make_response(std::error_code ec,
55
56
  search_index_get_documents_count_request& request,
56
- search_index_get_documents_count_request::encoded_response_type encoded)
57
+ search_index_get_documents_count_request::encoded_response_type&& encoded)
57
58
  {
58
59
  search_index_get_documents_count_response response{ request.client_context_id, ec };
59
60
  if (!ec) {
@@ -43,15 +43,16 @@ struct search_index_get_stats_request {
43
43
 
44
44
  std::string index_name;
45
45
 
46
- void encode_to(encoded_request_type& encoded, http_context&)
46
+ [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context&)
47
47
  {
48
48
  encoded.method = "GET";
49
49
  encoded.path = fmt::format("/api/stats/index/{}", index_name);
50
+ return {};
50
51
  }
51
52
  };
52
53
 
53
54
  search_index_get_stats_response
54
- make_response(std::error_code ec, search_index_get_stats_request& request, search_index_get_stats_request::encoded_response_type encoded)
55
+ make_response(std::error_code ec, search_index_get_stats_request& request, search_index_get_stats_request::encoded_response_type&& encoded)
55
56
  {
56
57
  search_index_get_stats_response response{ request.client_context_id, ec };
57
58
  if (!ec) {
@@ -42,7 +42,7 @@ struct search_index_upsert_request {
42
42
 
43
43
  search_index index;
44
44
 
45
- void encode_to(encoded_request_type& encoded, http_context&)
45
+ [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context&)
46
46
  {
47
47
  encoded.method = "PUT";
48
48
  encoded.headers["cache-control"] = "no-cache";
@@ -72,11 +72,12 @@ struct search_index_upsert_request {
72
72
  body["planParams"] = tao::json::from_string(index.plan_params_json);
73
73
  }
74
74
  encoded.body = tao::json::to_string(body);
75
+ return {};
75
76
  }
76
77
  };
77
78
 
78
79
  search_index_upsert_response
79
- make_response(std::error_code ec, search_index_upsert_request& request, search_index_upsert_request::encoded_response_type encoded)
80
+ make_response(std::error_code ec, search_index_upsert_request& request, search_index_upsert_request::encoded_response_type&& encoded)
80
81
  {
81
82
  search_index_upsert_response response{ request.client_context_id, ec };
82
83
  if (!ec) {
@@ -43,15 +43,16 @@ struct user_drop_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
- void encode_to(encoded_request_type& encoded, http_context&)
46
+ [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context&)
47
47
  {
48
48
  encoded.method = "DELETE";
49
49
  encoded.path = fmt::format("/settings/rbac/users/{}/{}", domain, username);
50
+ return {};
50
51
  }
51
52
  };
52
53
 
53
54
  user_drop_response
54
- make_response(std::error_code ec, user_drop_request& request, user_drop_request::encoded_response_type encoded)
55
+ make_response(std::error_code ec, user_drop_request& request, user_drop_request::encoded_response_type&& encoded)
55
56
  {
56
57
  user_drop_response response{ request.client_context_id, ec };
57
58
  if (!ec) {
@@ -44,16 +44,17 @@ struct user_get_request {
44
44
  std::chrono::milliseconds timeout{ timeout_defaults::management_timeout };
45
45
  std::string client_context_id{ uuid::to_string(uuid::random()) };
46
46
 
47
- void encode_to(encoded_request_type& encoded, http_context&)
47
+ [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context&)
48
48
  {
49
49
  encoded.method = "GET";
50
50
  encoded.path = fmt::format("/settings/rbac/users/{}/{}", domain, username);
51
51
  encoded.headers["content-type"] = "application/x-www-form-urlencoded";
52
+ return {};
52
53
  }
53
54
  };
54
55
 
55
56
  user_get_response
56
- make_response(std::error_code ec, user_get_request& request, user_get_request::encoded_response_type encoded)
57
+ make_response(std::error_code ec, user_get_request& request, user_get_request::encoded_response_type&& encoded)
57
58
  {
58
59
  user_get_response response{ request.client_context_id, ec };
59
60
  if (!ec) {
@@ -43,16 +43,17 @@ struct user_get_all_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
- void encode_to(encoded_request_type& encoded, http_context&)
46
+ [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context&)
47
47
  {
48
48
  encoded.method = "GET";
49
49
  encoded.path = fmt::format("/settings/rbac/users/{}", domain);
50
50
  encoded.headers["content-type"] = "application/x-www-form-urlencoded";
51
+ return {};
51
52
  }
52
53
  };
53
54
 
54
55
  user_get_all_response
55
- make_response(std::error_code ec, user_get_all_request& request, user_get_all_request::encoded_response_type encoded)
56
+ make_response(std::error_code ec, user_get_all_request& request, user_get_all_request::encoded_response_type&& encoded)
56
57
  {
57
58
  user_get_all_response response{ request.client_context_id, ec };
58
59
  if (!ec) {
@@ -48,7 +48,7 @@ struct user_upsert_request {
48
48
  std::chrono::milliseconds timeout{ timeout_defaults::management_timeout };
49
49
  std::string client_context_id{ uuid::to_string(uuid::random()) };
50
50
 
51
- void encode_to(encoded_request_type& encoded, http_context&)
51
+ [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context&)
52
52
  {
53
53
  encoded.method = "PUT";
54
54
  encoded.path = fmt::format("/settings/rbac/users/{}/{}", domain, user.username);
@@ -93,11 +93,12 @@ struct user_upsert_request {
93
93
  }
94
94
  encoded.body = fmt::format("{}", fmt::join(params, "&"));
95
95
  encoded.headers["content-type"] = "application/x-www-form-urlencoded";
96
+ return {};
96
97
  }
97
98
  };
98
99
 
99
100
  user_upsert_response
100
- make_response(std::error_code ec, user_upsert_request& request, user_upsert_request::encoded_response_type encoded)
101
+ make_response(std::error_code ec, user_upsert_request& request, user_upsert_request::encoded_response_type&& encoded)
101
102
  {
102
103
  user_upsert_response response{ request.client_context_id, ec };
103
104
  if (!ec) {
@@ -40,16 +40,17 @@ struct view_index_drop_request {
40
40
  std::string document_name;
41
41
  design_document::name_space name_space;
42
42
 
43
- void encode_to(encoded_request_type& encoded, http_context&)
43
+ [[nodiscard]] std::error_code encode_to(encoded_request_type& encoded, http_context&)
44
44
  {
45
45
  encoded.method = "DELETE";
46
46
  encoded.path =
47
47
  fmt::format("/{}/_design/{}{}", bucket_name, name_space == design_document::name_space::development ? "dev_" : "", document_name);
48
+ return {};
48
49
  }
49
50
  };
50
51
 
51
52
  view_index_drop_response
52
- make_response(std::error_code ec, view_index_drop_request& request, view_index_drop_request::encoded_response_type encoded)
53
+ make_response(std::error_code ec, view_index_drop_request& request, view_index_drop_request::encoded_response_type&& encoded)
53
54
  {
54
55
  view_index_drop_response response{ request.client_context_id, ec };
55
56
  if (!ec) {