couchbase 3.4.3 → 3.4.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (148) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +2 -2
  3. data/ext/couchbase/CMakeLists.txt +15 -1
  4. data/ext/couchbase/core/bucket.cxx +183 -152
  5. data/ext/couchbase/core/bucket.hxx +17 -4
  6. data/ext/couchbase/core/cluster.hxx +34 -13
  7. data/ext/couchbase/core/cluster_options.hxx +3 -0
  8. data/ext/couchbase/core/crud_component.cxx +51 -22
  9. data/ext/couchbase/core/error_context/key_value.cxx +2 -1
  10. data/ext/couchbase/core/error_context/key_value.hxx +10 -12
  11. data/ext/couchbase/core/impl/build_deferred_query_indexes.cxx +115 -50
  12. data/ext/couchbase/core/impl/cluster.cxx +6 -0
  13. data/ext/couchbase/core/impl/create_bucket.cxx +155 -0
  14. data/ext/couchbase/core/impl/create_query_index.cxx +172 -59
  15. data/ext/couchbase/core/impl/dns_srv_tracker.cxx +2 -1
  16. data/ext/couchbase/core/impl/drop_bucket.cxx +66 -0
  17. data/ext/couchbase/core/impl/drop_query_index.cxx +138 -59
  18. data/ext/couchbase/core/impl/flush_bucket.cxx +66 -0
  19. data/ext/couchbase/core/impl/get_all_buckets.cxx +163 -0
  20. data/ext/couchbase/core/impl/get_all_query_indexes.cxx +67 -37
  21. data/ext/couchbase/core/impl/get_bucket.cxx +153 -0
  22. data/ext/couchbase/core/impl/internal_manager_error_context.cxx +113 -0
  23. data/ext/couchbase/core/impl/internal_manager_error_context.hxx +60 -0
  24. data/ext/couchbase/core/impl/key_value_error_category.cxx +2 -4
  25. data/ext/couchbase/core/impl/key_value_error_context.cxx +98 -0
  26. data/ext/couchbase/core/impl/lookup_in.cxx +1 -0
  27. data/ext/couchbase/core/impl/lookup_in_all_replicas.cxx +176 -0
  28. data/ext/couchbase/core/impl/lookup_in_all_replicas.hxx +80 -0
  29. data/ext/couchbase/core/impl/lookup_in_any_replica.cxx +167 -0
  30. data/ext/couchbase/core/impl/lookup_in_any_replica.hxx +75 -0
  31. data/ext/couchbase/core/impl/lookup_in_replica.cxx +97 -0
  32. data/ext/couchbase/core/impl/lookup_in_replica.hxx +67 -0
  33. data/ext/couchbase/core/impl/manager_error_context.cxx +100 -0
  34. data/ext/couchbase/core/impl/query.cxx +1 -0
  35. data/ext/couchbase/core/impl/query_error_context.cxx +75 -0
  36. data/ext/couchbase/core/impl/update_bucket.cxx +130 -0
  37. data/ext/couchbase/core/impl/watch_query_indexes.cxx +53 -29
  38. data/ext/couchbase/core/io/dns_client.cxx +111 -40
  39. data/ext/couchbase/core/io/dns_config.cxx +5 -4
  40. data/ext/couchbase/core/io/http_session.hxx +24 -1
  41. data/ext/couchbase/core/io/mcbp_command.hxx +9 -2
  42. data/ext/couchbase/core/io/mcbp_session.cxx +80 -43
  43. data/ext/couchbase/core/io/mcbp_session.hxx +4 -3
  44. data/ext/couchbase/core/logger/custom_rotating_file_sink.cxx +1 -1
  45. data/ext/couchbase/core/logger/logger.cxx +80 -20
  46. data/ext/couchbase/core/logger/logger.hxx +31 -0
  47. data/ext/couchbase/core/meta/features.hxx +25 -0
  48. data/ext/couchbase/core/operations/document_lookup_in_all_replicas.hxx +192 -0
  49. data/ext/couchbase/core/operations/document_lookup_in_any_replica.hxx +188 -0
  50. data/ext/couchbase/core/operations/document_query.cxx +11 -0
  51. data/ext/couchbase/core/operations/document_query.hxx +1 -0
  52. data/ext/couchbase/core/operations.hxx +2 -0
  53. data/ext/couchbase/core/origin.cxx +270 -0
  54. data/ext/couchbase/core/origin.hxx +2 -0
  55. data/ext/couchbase/core/protocol/client_response.hxx +1 -0
  56. data/ext/couchbase/core/protocol/cmd_hello.hxx +1 -0
  57. data/ext/couchbase/core/protocol/cmd_lookup_in_replica.cxx +107 -0
  58. data/ext/couchbase/core/protocol/cmd_lookup_in_replica.hxx +137 -0
  59. data/ext/couchbase/core/protocol/hello_feature.hxx +6 -0
  60. data/ext/couchbase/core/protocol/hello_feature_fmt.hxx +3 -0
  61. data/ext/couchbase/core/protocol/status.cxx +2 -2
  62. data/ext/couchbase/core/range_scan_options.cxx +3 -27
  63. data/ext/couchbase/core/range_scan_options.hxx +13 -17
  64. data/ext/couchbase/core/range_scan_orchestrator.cxx +388 -170
  65. data/ext/couchbase/core/range_scan_orchestrator.hxx +13 -2
  66. data/ext/couchbase/core/range_scan_orchestrator_options.hxx +5 -3
  67. data/ext/couchbase/core/scan_options.hxx +0 -19
  68. data/ext/couchbase/core/scan_result.cxx +19 -5
  69. data/ext/couchbase/core/scan_result.hxx +5 -2
  70. data/ext/couchbase/core/timeout_defaults.hxx +2 -3
  71. data/ext/couchbase/core/topology/capabilities.hxx +3 -0
  72. data/ext/couchbase/core/topology/capabilities_fmt.hxx +8 -0
  73. data/ext/couchbase/core/topology/collections_manifest_fmt.hxx +1 -1
  74. data/ext/couchbase/core/topology/configuration.hxx +15 -0
  75. data/ext/couchbase/core/topology/configuration_json.hxx +6 -1
  76. data/ext/couchbase/core/utils/connection_string.cxx +62 -47
  77. data/ext/couchbase/core/utils/connection_string.hxx +1 -0
  78. data/ext/couchbase/couchbase/analytics_error_context.hxx +1 -1
  79. data/ext/couchbase/couchbase/behavior_options.hxx +19 -2
  80. data/ext/couchbase/couchbase/bucket_manager.hxx +135 -0
  81. data/ext/couchbase/couchbase/build_query_index_options.hxx +0 -30
  82. data/ext/couchbase/couchbase/cluster.hxx +14 -0
  83. data/ext/couchbase/couchbase/collection.hxx +111 -0
  84. data/ext/couchbase/couchbase/collection_query_index_manager.hxx +7 -48
  85. data/ext/couchbase/couchbase/create_bucket_options.hxx +41 -0
  86. data/ext/couchbase/couchbase/create_primary_query_index_options.hxx +0 -29
  87. data/ext/couchbase/couchbase/create_query_index_options.hxx +0 -33
  88. data/ext/couchbase/couchbase/drop_bucket_options.hxx +41 -0
  89. data/ext/couchbase/couchbase/drop_primary_query_index_options.hxx +0 -30
  90. data/ext/couchbase/couchbase/drop_query_index_options.hxx +0 -31
  91. data/ext/couchbase/couchbase/error_codes.hxx +1 -2
  92. data/ext/couchbase/couchbase/error_context.hxx +10 -2
  93. data/ext/couchbase/couchbase/flush_bucket_options.hxx +41 -0
  94. data/ext/couchbase/{core/topology/error_map_fmt.hxx → couchbase/fmt/key_value_error_map_attribute.hxx} +21 -21
  95. data/ext/couchbase/couchbase/get_all_buckets_options.hxx +44 -0
  96. data/ext/couchbase/couchbase/get_all_query_indexes_options.hxx +0 -30
  97. data/ext/couchbase/couchbase/get_and_lock_options.hxx +2 -2
  98. data/ext/couchbase/couchbase/get_and_touch_options.hxx +2 -2
  99. data/ext/couchbase/couchbase/get_bucket_options.hxx +43 -0
  100. data/ext/couchbase/couchbase/get_options.hxx +2 -2
  101. data/ext/couchbase/couchbase/insert_options.hxx +3 -3
  102. data/ext/couchbase/couchbase/key_value_error_context.hxx +7 -2
  103. data/ext/couchbase/couchbase/lookup_in_all_replicas_options.hxx +109 -0
  104. data/ext/couchbase/couchbase/lookup_in_any_replica_options.hxx +101 -0
  105. data/ext/couchbase/couchbase/lookup_in_options.hxx +2 -2
  106. data/ext/couchbase/couchbase/lookup_in_replica_result.hxx +74 -0
  107. data/ext/couchbase/couchbase/lookup_in_result.hxx +26 -0
  108. data/ext/couchbase/couchbase/management/bucket_settings.hxx +116 -0
  109. data/ext/couchbase/couchbase/manager_error_context.hxx +29 -53
  110. data/ext/couchbase/couchbase/mutate_in_options.hxx +2 -2
  111. data/ext/couchbase/couchbase/query_error_context.hxx +3 -1
  112. data/ext/couchbase/couchbase/query_index_manager.hxx +16 -83
  113. data/ext/couchbase/couchbase/query_options.hxx +18 -0
  114. data/ext/couchbase/couchbase/remove_options.hxx +2 -2
  115. data/ext/couchbase/couchbase/replace_options.hxx +3 -3
  116. data/ext/couchbase/couchbase/security_options.hxx +15 -0
  117. data/ext/couchbase/couchbase/subdocument_error_context.hxx +4 -2
  118. data/ext/couchbase/couchbase/touch_options.hxx +2 -2
  119. data/ext/couchbase/couchbase/unlock_options.hxx +2 -2
  120. data/ext/couchbase/couchbase/update_bucket_options.hxx +41 -0
  121. data/ext/couchbase/couchbase/upsert_options.hxx +3 -3
  122. data/ext/couchbase/couchbase/watch_query_indexes_options.hxx +0 -31
  123. data/ext/couchbase/test/CMakeLists.txt +1 -0
  124. data/ext/couchbase/test/test_integration_collections.cxx +6 -0
  125. data/ext/couchbase/test/test_integration_crud.cxx +5 -0
  126. data/ext/couchbase/test/test_integration_examples.cxx +137 -1
  127. data/ext/couchbase/test/test_integration_management.cxx +709 -266
  128. data/ext/couchbase/test/test_integration_query.cxx +19 -7
  129. data/ext/couchbase/test/test_integration_range_scan.cxx +351 -112
  130. data/ext/couchbase/test/test_integration_search.cxx +10 -1
  131. data/ext/couchbase/test/test_integration_subdoc.cxx +655 -0
  132. data/ext/couchbase/test/test_transaction_public_async_api.cxx +13 -12
  133. data/ext/couchbase/test/test_transaction_public_blocking_api.cxx +27 -21
  134. data/ext/couchbase/test/test_unit_connection_string.cxx +29 -0
  135. data/ext/couchbase/test/test_unit_query.cxx +75 -0
  136. data/ext/couchbase.cxx +583 -29
  137. data/ext/revisions.rb +3 -3
  138. data/lib/couchbase/cluster.rb +1 -1
  139. data/lib/couchbase/collection.rb +108 -0
  140. data/lib/couchbase/collection_options.rb +100 -0
  141. data/lib/couchbase/errors.rb +5 -0
  142. data/lib/couchbase/key_value_scan.rb +125 -0
  143. data/lib/couchbase/options.rb +151 -0
  144. data/lib/couchbase/scope.rb +1 -1
  145. data/lib/couchbase/utils/time.rb +14 -1
  146. data/lib/couchbase/version.rb +1 -1
  147. metadata +41 -7
  148. data/ext/couchbase/core/impl/collection_query_index_manager.cxx +0 -93
@@ -57,12 +57,14 @@ class error_context
57
57
  * @since 1.0.0
58
58
  * @internal
59
59
  */
60
- error_context(std::error_code ec,
60
+ error_context(std::string operation_id,
61
+ std::error_code ec,
61
62
  std::optional<std::string> last_dispatched_to,
62
63
  std::optional<std::string> last_dispatched_from,
63
64
  std::size_t retry_attempts,
64
65
  std::set<retry_reason> retry_reasons)
65
- : ec_{ ec }
66
+ : operation_id_{ std::move(operation_id) }
67
+ , ec_{ ec }
66
68
  , last_dispatched_to_{ std::move(last_dispatched_to) }
67
69
  , last_dispatched_from_{ std::move(last_dispatched_from) }
68
70
  , retry_attempts_{ retry_attempts }
@@ -70,6 +72,11 @@ class error_context
70
72
  {
71
73
  }
72
74
 
75
+ [[nodiscard]] virtual auto operation_id() const -> const std::string&
76
+ {
77
+ return operation_id_;
78
+ }
79
+
73
80
  /**
74
81
  * Returns status of the operation.
75
82
  *
@@ -165,6 +172,7 @@ class error_context
165
172
  }
166
173
 
167
174
  private:
175
+ std::string operation_id_{};
168
176
  std::error_code ec_{};
169
177
  std::optional<std::string> last_dispatched_to_{};
170
178
  std::optional<std::string> last_dispatched_from_{};
@@ -0,0 +1,41 @@
1
+ /* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright 2020-Present Couchbase, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ #pragma once
19
+
20
+ #include <functional>
21
+ #include <memory>
22
+ #include <optional>
23
+ #include <string>
24
+
25
+ namespace couchbase
26
+ {
27
+ struct flush_bucket_options : public common_options<flush_bucket_options> {
28
+ public:
29
+ struct built : public common_options<flush_bucket_options>::built {
30
+ };
31
+
32
+ [[nodiscard]] auto build() const -> built
33
+ {
34
+ return { build_common_options() };
35
+ }
36
+
37
+ private:
38
+ };
39
+
40
+ using flush_bucket_handler = std::function<void(couchbase::manager_error_context)>;
41
+ } // namespace couchbase
@@ -17,12 +17,12 @@
17
17
 
18
18
  #pragma once
19
19
 
20
- #include "error_map.hxx"
20
+ #include <couchbase/key_value_error_map_attribute.hxx>
21
21
 
22
22
  #include <fmt/core.h>
23
23
 
24
24
  template<>
25
- struct fmt::formatter<couchbase::api::key_value_error_map_attribute> {
25
+ struct fmt::formatter<couchbase::key_value_error_map_attribute> {
26
26
  template<typename ParseContext>
27
27
  constexpr auto parse(ParseContext& ctx)
28
28
  {
@@ -30,62 +30,62 @@ struct fmt::formatter<couchbase::api::key_value_error_map_attribute> {
30
30
  }
31
31
 
32
32
  template<typename FormatContext>
33
- auto format(couchbase::api::key_value_error_map_attribute attr, FormatContext& ctx) const
33
+ auto format(couchbase::key_value_error_map_attribute attr, FormatContext& ctx) const
34
34
  {
35
35
  string_view name = "unknown";
36
36
  switch (attr) {
37
- case couchbase::api::key_value_error_map_attribute::success:
37
+ case couchbase::key_value_error_map_attribute::success:
38
38
  name = "success";
39
39
  break;
40
- case couchbase::api::key_value_error_map_attribute::item_only:
40
+ case couchbase::key_value_error_map_attribute::item_only:
41
41
  name = "item-only";
42
42
  break;
43
- case couchbase::api::key_value_error_map_attribute::invalid_input:
43
+ case couchbase::key_value_error_map_attribute::invalid_input:
44
44
  name = "invalid-input";
45
45
  break;
46
- case couchbase::api::key_value_error_map_attribute::fetch_config:
46
+ case couchbase::key_value_error_map_attribute::fetch_config:
47
47
  name = "fetch-config";
48
48
  break;
49
- case couchbase::api::key_value_error_map_attribute::conn_state_invalidated:
49
+ case couchbase::key_value_error_map_attribute::conn_state_invalidated:
50
50
  name = "conn-state-invalidated";
51
51
  break;
52
- case couchbase::api::key_value_error_map_attribute::auth:
52
+ case couchbase::key_value_error_map_attribute::auth:
53
53
  name = "auth";
54
54
  break;
55
- case couchbase::api::key_value_error_map_attribute::special_handling:
55
+ case couchbase::key_value_error_map_attribute::special_handling:
56
56
  name = "special-handling";
57
57
  break;
58
- case couchbase::api::key_value_error_map_attribute::support:
58
+ case couchbase::key_value_error_map_attribute::support:
59
59
  name = "support";
60
60
  break;
61
- case couchbase::api::key_value_error_map_attribute::temp:
61
+ case couchbase::key_value_error_map_attribute::temp:
62
62
  name = "temp";
63
63
  break;
64
- case couchbase::api::key_value_error_map_attribute::internal:
64
+ case couchbase::key_value_error_map_attribute::internal:
65
65
  name = "internal";
66
66
  break;
67
- case couchbase::api::key_value_error_map_attribute::retry_now:
67
+ case couchbase::key_value_error_map_attribute::retry_now:
68
68
  name = "retry-now";
69
69
  break;
70
- case couchbase::api::key_value_error_map_attribute::retry_later:
70
+ case couchbase::key_value_error_map_attribute::retry_later:
71
71
  name = "retry-later";
72
72
  break;
73
- case couchbase::api::key_value_error_map_attribute::subdoc:
73
+ case couchbase::key_value_error_map_attribute::subdoc:
74
74
  name = "subdoc";
75
75
  break;
76
- case couchbase::api::key_value_error_map_attribute::dcp:
76
+ case couchbase::key_value_error_map_attribute::dcp:
77
77
  name = "dcp";
78
78
  break;
79
- case couchbase::api::key_value_error_map_attribute::auto_retry:
79
+ case couchbase::key_value_error_map_attribute::auto_retry:
80
80
  name = "auto-retry";
81
81
  break;
82
- case couchbase::api::key_value_error_map_attribute::item_locked:
82
+ case couchbase::key_value_error_map_attribute::item_locked:
83
83
  name = "item-locked";
84
84
  break;
85
- case couchbase::api::key_value_error_map_attribute::item_deleted:
85
+ case couchbase::key_value_error_map_attribute::item_deleted:
86
86
  name = "item-deleted";
87
87
  break;
88
- case couchbase::api::key_value_error_map_attribute::rate_limit:
88
+ case couchbase::key_value_error_map_attribute::rate_limit:
89
89
  name = "rate-limit";
90
90
  break;
91
91
  }
@@ -0,0 +1,44 @@
1
+ /* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright 2020-Present Couchbase, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ #pragma once
19
+
20
+ #include <couchbase/management/bucket_settings.hxx>
21
+
22
+ #include <functional>
23
+ #include <memory>
24
+ #include <optional>
25
+ #include <string>
26
+
27
+ namespace couchbase
28
+ {
29
+ struct get_all_buckets_options : public common_options<get_all_buckets_options> {
30
+ public:
31
+ struct built : public common_options<get_all_buckets_options>::built {
32
+ };
33
+
34
+ [[nodiscard]] auto build() const -> built
35
+ {
36
+ return { build_common_options() };
37
+ }
38
+
39
+ private:
40
+ };
41
+
42
+ using get_all_buckets_handler =
43
+ std::function<void(couchbase::manager_error_context, std::vector<couchbase::management::cluster::bucket_settings>)>;
44
+ } // namespace couchbase
@@ -68,34 +68,4 @@ class get_all_query_indexes_options : public common_options<get_all_query_indexe
68
68
 
69
69
  using get_all_query_indexes_handler =
70
70
  std::function<void(couchbase::manager_error_context, std::vector<couchbase::management::query::index>)>;
71
-
72
- #ifndef COUCHBASE_CXX_CLIENT_DOXYGEN
73
- namespace core
74
- {
75
- class cluster;
76
- class query_context;
77
- namespace impl
78
- {
79
-
80
- /**
81
- * @since 1.0.0
82
- * @internal
83
- */
84
- void
85
- initiate_get_all_query_indexes(std::shared_ptr<couchbase::core::cluster> core,
86
- std::string bucket_name,
87
- couchbase::get_all_query_indexes_options::built options,
88
- get_all_query_indexes_handler&& handler);
89
-
90
- void
91
- initiate_get_all_query_indexes(std::shared_ptr<couchbase::core::cluster> core,
92
- std::string bucket_name,
93
- couchbase::get_all_query_indexes_options::built options,
94
- query_context query_ctx,
95
- std::string collection_name,
96
- get_all_query_indexes_handler&& handler);
97
-
98
- #endif
99
- } // namespace impl
100
- } // namespace core
101
71
  } // namespace couchbase
@@ -86,8 +86,8 @@ initiate_get_and_lock_operation(std::shared_ptr<couchbase::core::cluster> core,
86
86
  std::string collection_name,
87
87
  std::string document_key,
88
88
  std::chrono::seconds lock_duration,
89
- get_and_lock_options::built options,
90
- get_and_lock_handler&& handler);
89
+ couchbase::get_and_lock_options::built options,
90
+ couchbase::get_and_lock_handler&& handler);
91
91
  #endif
92
92
  } // namespace impl
93
93
  } // namespace core
@@ -86,8 +86,8 @@ initiate_get_and_touch_operation(std::shared_ptr<couchbase::core::cluster> core,
86
86
  std::string collection_name,
87
87
  std::string document_key,
88
88
  std::uint32_t expiry,
89
- get_and_touch_options::built options,
90
- get_and_touch_handler&& handler);
89
+ couchbase::get_and_touch_options::built options,
90
+ couchbase::get_and_touch_handler&& handler);
91
91
  #endif
92
92
  } // namespace impl
93
93
  } // namespace core
@@ -0,0 +1,43 @@
1
+ /* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright 2020-Present Couchbase, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ #pragma once
19
+
20
+ #include <couchbase/management/bucket_settings.hxx>
21
+
22
+ #include <functional>
23
+ #include <memory>
24
+ #include <optional>
25
+ #include <string>
26
+
27
+ namespace couchbase
28
+ {
29
+ struct get_bucket_options : public common_options<get_bucket_options> {
30
+ public:
31
+ struct built : public common_options<get_bucket_options>::built {
32
+ };
33
+
34
+ [[nodiscard]] auto build() const -> built
35
+ {
36
+ return { build_common_options() };
37
+ }
38
+
39
+ private:
40
+ };
41
+
42
+ using get_bucket_handler = std::function<void(couchbase::manager_error_context, couchbase::management::cluster::bucket_settings)>;
43
+ } // namespace couchbase
@@ -129,8 +129,8 @@ initiate_get_operation(std::shared_ptr<couchbase::core::cluster> core,
129
129
  std::string scope_name,
130
130
  std::string collection_name,
131
131
  std::string document_key,
132
- get_options::built options,
133
- get_handler&& handler);
132
+ couchbase::get_options::built options,
133
+ couchbase::get_handler&& handler);
134
134
  #endif
135
135
  } // namespace impl
136
136
  } // namespace core
@@ -127,9 +127,9 @@ initiate_insert_operation(std::shared_ptr<couchbase::core::cluster> core,
127
127
  std::string scope_name,
128
128
  std::string collection_name,
129
129
  std::string document_key,
130
- codec::encoded_value encoded,
131
- insert_options::built options,
132
- insert_handler&& handler);
130
+ couchbase::codec::encoded_value encoded,
131
+ couchbase::insert_options::built options,
132
+ couchbase::insert_handler&& handler);
133
133
  #endif
134
134
  } // namespace impl
135
135
  } // namespace core
@@ -48,6 +48,7 @@ class key_value_error_context : public error_context
48
48
  /**
49
49
  * Creates and initializes error context with given parameters.
50
50
  *
51
+ * @param operation_id
51
52
  * @param ec
52
53
  * @param last_dispatched_to
53
54
  * @param last_dispatched_from
@@ -66,7 +67,8 @@ class key_value_error_context : public error_context
66
67
  * @since 1.0.0
67
68
  * @internal
68
69
  */
69
- key_value_error_context(std::error_code ec,
70
+ key_value_error_context(std::string operation_id,
71
+ std::error_code ec,
70
72
  std::optional<std::string> last_dispatched_to,
71
73
  std::optional<std::string> last_dispatched_from,
72
74
  std::size_t retry_attempts,
@@ -80,7 +82,8 @@ class key_value_error_context : public error_context
80
82
  couchbase::cas cas,
81
83
  std::optional<key_value_error_map_info> error_map_info,
82
84
  std::optional<key_value_extended_error_info> extended_error_info)
83
- : error_context{ ec, std::move(last_dispatched_to), std::move(last_dispatched_from), retry_attempts, std::move(retry_reasons) }
85
+ : error_context{ std::move(operation_id), ec, std::move(last_dispatched_to), std::move(last_dispatched_from), retry_attempts,
86
+ std::move(retry_reasons) }
84
87
  , id_{ std::move(id) }
85
88
  , bucket_{ std::move(bucket) }
86
89
  , scope_{ std::move(scope) }
@@ -210,6 +213,8 @@ class key_value_error_context : public error_context
210
213
  return extended_error_info_;
211
214
  }
212
215
 
216
+ [[nodiscard]] auto to_json() const -> std::string;
217
+
213
218
  private:
214
219
  std::string id_{};
215
220
  std::string bucket_{};
@@ -0,0 +1,109 @@
1
+ /* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright 2020-Present Couchbase, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ #pragma once
19
+
20
+ #include <couchbase/subdoc/fwd/command_bundle.hxx>
21
+
22
+ #include <core/impl/subdoc/command.hxx>
23
+ #include <couchbase/codec/encoded_value.hxx>
24
+ #include <couchbase/common_options.hxx>
25
+ #include <couchbase/expiry.hxx>
26
+ #include <couchbase/lookup_in_replica_result.hxx>
27
+ #include <couchbase/store_semantics.hxx>
28
+ #include <couchbase/subdocument_error_context.hxx>
29
+
30
+ #include <chrono>
31
+ #include <functional>
32
+ #include <memory>
33
+ #include <optional>
34
+ #include <vector>
35
+
36
+ namespace couchbase
37
+ {
38
+ /**
39
+ * Options for @ref collection#lookup_in_all_replicas().
40
+ *
41
+ * @since 1.0.0
42
+ * @committed
43
+ */
44
+ struct lookup_in_all_replicas_options : common_options<lookup_in_all_replicas_options> {
45
+ /**
46
+ * Immutable value object representing consistent options.
47
+ *
48
+ * @since 1.0.0
49
+ * @internal
50
+ */
51
+ struct built : public common_options<lookup_in_all_replicas_options>::built {
52
+ };
53
+
54
+ /**
55
+ * Validates options and returns them as an immutable value.
56
+ *
57
+ * @return consistent options as an immutable value
58
+ *
59
+ * @exception std::system_error with code errc::common::invalid_argument if the options are not valid
60
+ *
61
+ * @since 1.0.0
62
+ * @internal
63
+ */
64
+ [[nodiscard]] auto build() const -> built
65
+ {
66
+ return { build_common_options() };
67
+ }
68
+ };
69
+
70
+ /**
71
+ * The result for the @ref collection#lookup_in_all_replicas() operation
72
+ *
73
+ * @since 1.0.0
74
+ * @uncommitted
75
+ */
76
+ using lookup_in_all_replicas_result = std::vector<lookup_in_replica_result>;
77
+
78
+ /**
79
+ * The signature for the handler of the @ref collection#lookup_in_all_replicas() operation
80
+ *
81
+ * @since 1.0.0
82
+ * @uncommitted
83
+ */
84
+ using lookup_in_all_replicas_handler = std::function<void(couchbase::subdocument_error_context, lookup_in_all_replicas_result)>;
85
+
86
+ #ifndef COUCHBASE_CXX_CLIENT_DOXYGEN
87
+ namespace core
88
+ {
89
+ class cluster;
90
+ namespace impl
91
+ {
92
+
93
+ /**
94
+ * @since 1.0.0
95
+ * @internal
96
+ */
97
+ void
98
+ initiate_lookup_in_all_replicas_operation(std::shared_ptr<couchbase::core::cluster> core,
99
+ const std::string& bucket_name,
100
+ const std::string& scope_name,
101
+ const std::string& collection_name,
102
+ std::string document_key,
103
+ const std::vector<couchbase::core::impl::subdoc::command>& specs,
104
+ lookup_in_all_replicas_options::built options,
105
+ lookup_in_all_replicas_handler&& handler);
106
+ #endif
107
+ } // namespace impl
108
+ } // namespace core
109
+ } // namespace couchbase
@@ -0,0 +1,101 @@
1
+ /* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright 2020-Present Couchbase, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ #pragma once
19
+
20
+ #include <couchbase/subdoc/fwd/command_bundle.hxx>
21
+
22
+ #include <core/impl/subdoc/command.hxx>
23
+ #include <couchbase/codec/encoded_value.hxx>
24
+ #include <couchbase/common_options.hxx>
25
+ #include <couchbase/expiry.hxx>
26
+ #include <couchbase/lookup_in_replica_result.hxx>
27
+ #include <couchbase/store_semantics.hxx>
28
+ #include <couchbase/subdocument_error_context.hxx>
29
+
30
+ #include <chrono>
31
+ #include <functional>
32
+ #include <memory>
33
+ #include <optional>
34
+ #include <vector>
35
+
36
+ namespace couchbase
37
+ {
38
+ /**
39
+ * Options for @ref collection#lookup_in_any_replica().
40
+ *
41
+ * @since 1.0.0
42
+ * @committed
43
+ */
44
+ struct lookup_in_any_replica_options : common_options<lookup_in_any_replica_options> {
45
+ /**
46
+ * Immutable value object representing consistent options.
47
+ *
48
+ * @since 1.0.0
49
+ * @internal
50
+ */
51
+ struct built : public common_options<lookup_in_any_replica_options>::built {
52
+ };
53
+
54
+ /**
55
+ * Validates options and returns them as an immutable value.
56
+ *
57
+ * @return consistent options as an immutable value
58
+ *
59
+ * @exception std::system_error with code errc::common::invalid_argument if the options are not valid
60
+ *
61
+ * @since 1.0.0
62
+ * @internal
63
+ */
64
+ [[nodiscard]] auto build() const -> built
65
+ {
66
+ return { build_common_options() };
67
+ }
68
+ };
69
+
70
+ /**
71
+ * The signature for the handler of the @ref collection#lookup_in_any_replica() operation
72
+ *
73
+ * @since 1.0.0
74
+ * @uncommitted
75
+ */
76
+ using lookup_in_any_replica_handler = std::function<void(couchbase::subdocument_error_context, lookup_in_replica_result)>;
77
+
78
+ #ifndef COUCHBASE_CXX_CLIENT_DOXYGEN
79
+ namespace core
80
+ {
81
+ class cluster;
82
+ namespace impl
83
+ {
84
+
85
+ /**
86
+ * @since 1.0.0
87
+ * @internal
88
+ */
89
+ void
90
+ initiate_lookup_in_any_replica_operation(std::shared_ptr<couchbase::core::cluster> core,
91
+ const std::string& bucket_name,
92
+ const std::string& scope_name,
93
+ const std::string& collection_name,
94
+ std::string document_key,
95
+ const std::vector<couchbase::core::impl::subdoc::command>& specs,
96
+ lookup_in_any_replica_options::built options,
97
+ lookup_in_any_replica_handler&& handler);
98
+ #endif
99
+ } // namespace impl
100
+ } // namespace core
101
+ } // namespace couchbase
@@ -111,8 +111,8 @@ initiate_lookup_in_operation(std::shared_ptr<couchbase::core::cluster> core,
111
111
  std::string collection_name,
112
112
  std::string document_key,
113
113
  const std::vector<couchbase::core::impl::subdoc::command>& specs,
114
- lookup_in_options::built options,
115
- lookup_in_handler&& handler);
114
+ couchbase::lookup_in_options::built options,
115
+ couchbase::lookup_in_handler&& handler);
116
116
  #endif
117
117
  } // namespace impl
118
118
  } // namespace core