couchbase 4.2.5-dev.3 → 4.2.6-dev

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 (122) hide show
  1. package/README.md +81 -9
  2. package/deps/couchbase-cxx-client/CMakeLists.txt +9 -1
  3. package/deps/couchbase-cxx-client/bin/api.rb +234 -0
  4. package/deps/couchbase-cxx-client/bin/create-search-index +18 -135
  5. package/deps/couchbase-cxx-client/bin/init-cluster +17 -139
  6. package/deps/couchbase-cxx-client/bin/load-sample-buckets +54 -0
  7. package/deps/couchbase-cxx-client/core/cluster.hxx +33 -12
  8. package/deps/couchbase-cxx-client/core/cluster_options.hxx +3 -0
  9. package/deps/couchbase-cxx-client/core/crud_component.cxx +51 -22
  10. package/deps/couchbase-cxx-client/core/impl/build_deferred_query_indexes.cxx +115 -50
  11. package/deps/couchbase-cxx-client/core/impl/cluster.cxx +6 -0
  12. package/deps/couchbase-cxx-client/core/impl/create_bucket.cxx +155 -0
  13. package/deps/couchbase-cxx-client/core/impl/create_query_index.cxx +172 -59
  14. package/deps/couchbase-cxx-client/core/impl/dns_srv_tracker.cxx +2 -1
  15. package/deps/couchbase-cxx-client/core/impl/drop_bucket.cxx +66 -0
  16. package/deps/couchbase-cxx-client/core/impl/drop_query_index.cxx +138 -59
  17. package/deps/couchbase-cxx-client/core/impl/flush_bucket.cxx +66 -0
  18. package/deps/couchbase-cxx-client/core/impl/get_all_buckets.cxx +163 -0
  19. package/deps/couchbase-cxx-client/core/impl/get_all_query_indexes.cxx +67 -37
  20. package/deps/couchbase-cxx-client/core/impl/get_bucket.cxx +153 -0
  21. package/deps/couchbase-cxx-client/core/impl/internal_manager_error_context.cxx +113 -0
  22. package/deps/couchbase-cxx-client/core/impl/internal_manager_error_context.hxx +60 -0
  23. package/deps/couchbase-cxx-client/core/impl/key_value_error_category.cxx +2 -4
  24. package/deps/couchbase-cxx-client/core/impl/manager_error_context.cxx +100 -0
  25. package/deps/couchbase-cxx-client/core/impl/query.cxx +1 -0
  26. package/deps/couchbase-cxx-client/core/impl/update_bucket.cxx +130 -0
  27. package/deps/couchbase-cxx-client/core/impl/watch_query_indexes.cxx +53 -29
  28. package/deps/couchbase-cxx-client/core/io/dns_client.cxx +71 -38
  29. package/deps/couchbase-cxx-client/core/io/dns_config.cxx +5 -4
  30. package/deps/couchbase-cxx-client/core/io/mcbp_session.cxx +5 -6
  31. package/deps/couchbase-cxx-client/core/meta/features.hxx +6 -0
  32. package/deps/couchbase-cxx-client/core/operations/document_query.cxx +11 -0
  33. package/deps/couchbase-cxx-client/core/operations/document_query.hxx +1 -0
  34. package/deps/couchbase-cxx-client/core/origin.cxx +270 -0
  35. package/deps/couchbase-cxx-client/core/origin.hxx +2 -0
  36. package/deps/couchbase-cxx-client/core/protocol/status.cxx +2 -2
  37. package/deps/couchbase-cxx-client/core/range_scan_options.cxx +3 -27
  38. package/deps/couchbase-cxx-client/core/range_scan_options.hxx +13 -17
  39. package/deps/couchbase-cxx-client/core/range_scan_orchestrator.cxx +367 -170
  40. package/deps/couchbase-cxx-client/core/range_scan_orchestrator.hxx +13 -2
  41. package/deps/couchbase-cxx-client/core/range_scan_orchestrator_options.hxx +5 -3
  42. package/deps/couchbase-cxx-client/core/scan_options.hxx +0 -19
  43. package/deps/couchbase-cxx-client/core/scan_result.cxx +19 -5
  44. package/deps/couchbase-cxx-client/core/scan_result.hxx +5 -2
  45. package/deps/couchbase-cxx-client/core/timeout_defaults.hxx +2 -3
  46. package/deps/couchbase-cxx-client/core/topology/capabilities.hxx +1 -0
  47. package/deps/couchbase-cxx-client/core/topology/capabilities_fmt.hxx +2 -0
  48. package/deps/couchbase-cxx-client/core/topology/collections_manifest_fmt.hxx +1 -1
  49. package/deps/couchbase-cxx-client/core/topology/configuration.hxx +5 -0
  50. package/deps/couchbase-cxx-client/core/topology/configuration_json.hxx +2 -0
  51. package/deps/couchbase-cxx-client/core/utils/connection_string.cxx +4 -0
  52. package/deps/couchbase-cxx-client/couchbase/behavior_options.hxx +19 -2
  53. package/deps/couchbase-cxx-client/couchbase/bucket_manager.hxx +135 -0
  54. package/deps/couchbase-cxx-client/couchbase/build_query_index_options.hxx +0 -30
  55. package/deps/couchbase-cxx-client/couchbase/cluster.hxx +14 -0
  56. package/deps/couchbase-cxx-client/couchbase/collection_query_index_manager.hxx +7 -48
  57. package/deps/couchbase-cxx-client/couchbase/create_bucket_options.hxx +41 -0
  58. package/deps/couchbase-cxx-client/couchbase/create_primary_query_index_options.hxx +0 -29
  59. package/deps/couchbase-cxx-client/couchbase/create_query_index_options.hxx +0 -33
  60. package/deps/couchbase-cxx-client/couchbase/drop_bucket_options.hxx +41 -0
  61. package/deps/couchbase-cxx-client/couchbase/drop_primary_query_index_options.hxx +0 -30
  62. package/deps/couchbase-cxx-client/couchbase/drop_query_index_options.hxx +0 -31
  63. package/deps/couchbase-cxx-client/couchbase/error_codes.hxx +1 -2
  64. package/deps/couchbase-cxx-client/couchbase/flush_bucket_options.hxx +41 -0
  65. package/deps/couchbase-cxx-client/couchbase/get_all_buckets_options.hxx +44 -0
  66. package/deps/couchbase-cxx-client/couchbase/get_all_query_indexes_options.hxx +0 -30
  67. package/deps/couchbase-cxx-client/couchbase/get_bucket_options.hxx +43 -0
  68. package/deps/couchbase-cxx-client/couchbase/management/bucket_settings.hxx +116 -0
  69. package/deps/couchbase-cxx-client/couchbase/manager_error_context.hxx +29 -53
  70. package/deps/couchbase-cxx-client/couchbase/query_index_manager.hxx +16 -83
  71. package/deps/couchbase-cxx-client/couchbase/query_options.hxx +18 -0
  72. package/deps/couchbase-cxx-client/couchbase/security_options.hxx +15 -0
  73. package/deps/couchbase-cxx-client/couchbase/update_bucket_options.hxx +41 -0
  74. package/deps/couchbase-cxx-client/couchbase/watch_query_indexes_options.hxx +0 -31
  75. package/deps/couchbase-cxx-client/docs/cbc-analytics.md +1 -0
  76. package/deps/couchbase-cxx-client/docs/cbc-get.md +1 -0
  77. package/deps/couchbase-cxx-client/docs/cbc-pillowfight.md +1 -0
  78. package/deps/couchbase-cxx-client/docs/cbc-query.md +1 -0
  79. package/deps/couchbase-cxx-client/docs/cbc.md +10 -0
  80. package/deps/couchbase-cxx-client/test/CMakeLists.txt +1 -0
  81. package/deps/couchbase-cxx-client/test/test_integration_collections.cxx +6 -0
  82. package/deps/couchbase-cxx-client/test/test_integration_crud.cxx +5 -0
  83. package/deps/couchbase-cxx-client/test/test_integration_examples.cxx +137 -1
  84. package/deps/couchbase-cxx-client/test/test_integration_management.cxx +709 -266
  85. package/deps/couchbase-cxx-client/test/test_integration_query.cxx +19 -7
  86. package/deps/couchbase-cxx-client/test/test_integration_range_scan.cxx +351 -112
  87. package/deps/couchbase-cxx-client/test/test_integration_search.cxx +10 -1
  88. package/deps/couchbase-cxx-client/test/test_transaction_public_async_api.cxx +13 -12
  89. package/deps/couchbase-cxx-client/test/test_transaction_public_blocking_api.cxx +27 -21
  90. package/deps/couchbase-cxx-client/test/test_unit_query.cxx +75 -0
  91. package/deps/couchbase-cxx-client/test/utils/server_version.hxx +5 -0
  92. package/deps/couchbase-cxx-client/test/utils/wait_until.cxx +29 -10
  93. package/deps/couchbase-cxx-client/test/utils/wait_until.hxx +3 -1
  94. package/deps/couchbase-cxx-client/tools/utils.cxx +4 -1
  95. package/dist/binding.d.ts +21 -16
  96. package/dist/binding.js +1 -4
  97. package/dist/bindingutilities.d.ts +6 -1
  98. package/dist/bindingutilities.js +36 -1
  99. package/dist/collection.d.ts +65 -3
  100. package/dist/collection.js +107 -0
  101. package/dist/crudoptypes.d.ts +34 -0
  102. package/dist/crudoptypes.js +18 -1
  103. package/dist/queryexecutor.js +1 -0
  104. package/dist/querytypes.d.ts +7 -0
  105. package/dist/rangeScan.d.ts +107 -0
  106. package/dist/rangeScan.js +91 -0
  107. package/dist/streamablepromises.d.ts +6 -0
  108. package/dist/streamablepromises.js +25 -1
  109. package/package.json +13 -14
  110. package/scripts/createPlatformPackages.js +1 -4
  111. package/src/addondata.hpp +1 -0
  112. package/src/binding.cpp +5 -2
  113. package/src/connection.cpp +108 -2
  114. package/src/connection.hpp +1 -0
  115. package/src/constants.cpp +2 -12
  116. package/src/jstocbpp_autogen.hpp +49 -22
  117. package/src/jstocbpp_basic.hpp +2 -8
  118. package/src/mutationtoken.cpp +13 -0
  119. package/src/scan_iterator.cpp +90 -0
  120. package/src/scan_iterator.hpp +30 -0
  121. package/tools/gen-bindings-json.py +9 -8
  122. package/deps/couchbase-cxx-client/core/impl/collection_query_index_manager.cxx +0 -93
@@ -136,37 +136,4 @@ class create_query_index_options : public common_options<create_query_index_opti
136
136
  */
137
137
 
138
138
  using create_query_index_handler = std::function<void(couchbase::manager_error_context)>;
139
-
140
- #ifndef COUCHBASE_CXX_CLIENT_DOXYGEN
141
- namespace core
142
- {
143
- class cluster;
144
- class query_context;
145
- namespace impl
146
- {
147
-
148
- /**
149
- * @since 1.0.0
150
- * @internal
151
- */
152
- void
153
- initiate_create_query_index(std::shared_ptr<couchbase::core::cluster> core,
154
- std::string bucket_name,
155
- std::string index_name,
156
- std::vector<std::string> fields,
157
- couchbase::create_query_index_options::built options,
158
- create_query_index_handler&& handler);
159
- void
160
- initiate_create_query_index(std::shared_ptr<couchbase::core::cluster> core,
161
- std::string bucket_name,
162
- std::string index_name,
163
- std::vector<std::string> fields,
164
- couchbase::create_query_index_options::built options,
165
- query_context query_ctx,
166
- std::string collection_name,
167
- create_query_index_handler&& handler);
168
-
169
- #endif
170
- } // namespace impl
171
- } // namespace core
172
139
  } // namespace couchbase
@@ -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 drop_bucket_options : public common_options<drop_bucket_options> {
28
+ public:
29
+ struct built : public common_options<drop_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 drop_bucket_handler = std::function<void(couchbase::manager_error_context)>;
41
+ } // namespace couchbase
@@ -96,34 +96,4 @@ class drop_primary_query_index_options : public common_options<drop_primary_quer
96
96
  */
97
97
 
98
98
  using drop_primary_query_index_handler = std::function<void(couchbase::manager_error_context)>;
99
-
100
- #ifndef COUCHBASE_CXX_CLIENT_DOXYGEN
101
- namespace core
102
- {
103
- class cluster;
104
- class query_context;
105
- namespace impl
106
- {
107
-
108
- /**
109
- * @since 1.0.0
110
- * @internal
111
- */
112
- void
113
- initiate_drop_primary_query_index(std::shared_ptr<couchbase::core::cluster> core,
114
- std::string bucket_name,
115
- couchbase::drop_primary_query_index_options::built options,
116
- query_context query_ctx,
117
- std::string collection_name,
118
- drop_primary_query_index_handler&& handler);
119
-
120
- void
121
- initiate_drop_primary_query_index(std::shared_ptr<couchbase::core::cluster> core,
122
- std::string bucket_name,
123
- couchbase::drop_primary_query_index_options::built options,
124
- drop_primary_query_index_handler&& handler);
125
-
126
- #endif
127
- } // namespace impl
128
- } // namespace core
129
99
  } // namespace couchbase
@@ -82,35 +82,4 @@ class drop_query_index_options : public common_options<drop_query_index_options>
82
82
  */
83
83
 
84
84
  using drop_query_index_handler = std::function<void(couchbase::manager_error_context)>;
85
-
86
- #ifndef COUCHBASE_CXX_CLIENT_DOXYGEN
87
- namespace core
88
- {
89
- class cluster;
90
- class query_context;
91
- namespace impl
92
- {
93
-
94
- /**
95
- * @since 1.0.0
96
- * @internal
97
- */
98
- void
99
- initiate_drop_query_index(std::shared_ptr<couchbase::core::cluster> core,
100
- std::string bucket_name,
101
- std::string index_name,
102
- couchbase::drop_query_index_options::built options,
103
- query_context query_ctx,
104
- std::string collection_name,
105
- drop_query_index_handler&& handler);
106
- void
107
- initiate_drop_query_index(std::shared_ptr<couchbase::core::cluster> core,
108
- std::string bucket_name,
109
- std::string index_name,
110
- couchbase::drop_query_index_options::built options,
111
- drop_query_index_handler&& handler);
112
-
113
- #endif
114
- } // namespace impl
115
- } // namespace core
116
85
  } // namespace couchbase
@@ -599,8 +599,7 @@ enum class key_value {
599
599
  // KV Code: 0xd6
600
600
  cannot_revive_living_document = 131,
601
601
 
602
- range_scan_cancelled = 132,
603
- range_scan_vb_uuid_not_equal = 133,
602
+ mutation_token_outdated = 133,
604
603
  range_scan_completed = 134,
605
604
  };
606
605
 
@@ -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
@@ -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
@@ -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
@@ -0,0 +1,116 @@
1
+ /* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
2
+ /*
3
+ * Copyright 2020-2021 Couchbase, Inc.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ #pragma once
19
+
20
+ #include <couchbase/durability_level.hxx>
21
+
22
+ #include <map>
23
+ #include <optional>
24
+ #include <string>
25
+ #include <vector>
26
+
27
+ namespace couchbase::management::cluster
28
+ {
29
+ enum class bucket_type { unknown, couchbase, memcached, ephemeral };
30
+ enum class bucket_compression { unknown, off, active, passive };
31
+ enum class bucket_eviction_policy {
32
+ unknown,
33
+
34
+ /**
35
+ * During ejection, everything (including key, metadata, and value) will be ejected.
36
+ *
37
+ * Full Ejection reduces the memory overhead requirement, at the cost of performance.
38
+ *
39
+ * This value is only valid for buckets of type COUCHBASE.
40
+ */
41
+ full,
42
+
43
+ /**
44
+ * During ejection, only the value will be ejected (key and metadata will remain in memory).
45
+ *
46
+ * Value Ejection needs more system memory, but provides better performance than Full Ejection.
47
+ *
48
+ * This value is only valid for buckets of type COUCHBASE.
49
+ */
50
+ value_only,
51
+
52
+ /**
53
+ * Couchbase Server keeps all data until explicitly deleted, but will reject
54
+ * any new data if you reach the quota (dedicated memory) you set for your bucket.
55
+ *
56
+ * This value is only valid for buckets of type EPHEMERAL.
57
+ */
58
+ no_eviction,
59
+
60
+ /**
61
+ * When the memory quota is reached, Couchbase Server ejects data that has not been used recently.
62
+ *
63
+ * This value is only valid for buckets of type EPHEMERAL.
64
+ */
65
+ not_recently_used,
66
+ };
67
+ enum class bucket_conflict_resolution {
68
+ unknown,
69
+ /**
70
+ * Use timestamp conflict resolution.
71
+ *
72
+ * Timestamp-based conflict resolution (often referred to as Last Write Wins, or LWW) uses the document
73
+ * timestamp (stored in the CAS) to resolve conflicts. The timestamps associated with the most recent
74
+ * updates of source and target documents are compared. The document whose update has the more recent
75
+ * timestamp prevails.
76
+ */
77
+ timestamp,
78
+
79
+ /**
80
+ * Use sequence number conflict resolution
81
+ *
82
+ * Conflicts can be resolved by referring to documents' sequence numbers. Sequence numbers are maintained
83
+ * per document, and are incremented on every document-update. The sequence numbers of source and
84
+ * target documents are compared; and the document with the higher sequence number prevails.
85
+ */
86
+ sequence_number,
87
+
88
+ /**
89
+ * VOLATILE: This API is subject to change at any time.
90
+ *
91
+ * In Couchbase Server 7.1, this feature is only available in "developer-preview" mode. See the UI XDCR settings.
92
+ */
93
+ custom,
94
+ };
95
+ enum class bucket_storage_backend { unknown, couchstore, magma };
96
+
97
+ struct bucket_settings {
98
+
99
+ std::string name;
100
+ cluster::bucket_type bucket_type{ cluster::bucket_type::unknown };
101
+ std::uint64_t ram_quota_mb{ 100 };
102
+ std::uint32_t max_expiry{ 0 };
103
+ bucket_compression compression_mode{ bucket_compression::unknown };
104
+ std::optional<couchbase::durability_level> minimum_durability_level{};
105
+ std::uint32_t num_replicas{ 1 };
106
+ bool replica_indexes{ false };
107
+ bool flush_enabled{ false };
108
+ bucket_eviction_policy eviction_policy{ bucket_eviction_policy::unknown };
109
+ bucket_conflict_resolution conflict_resolution_type{ bucket_conflict_resolution::unknown };
110
+
111
+ /**
112
+ * UNCOMMITTED: This API may change in the future
113
+ */
114
+ bucket_storage_backend storage_backend{ bucket_storage_backend::unknown };
115
+ };
116
+ } // namespace couchbase::management::cluster
@@ -17,14 +17,20 @@
17
17
 
18
18
  #pragma once
19
19
 
20
+ #include "core/impl/internal_manager_error_context.hxx"
20
21
  #include <couchbase/error_context.hxx>
21
22
 
22
23
  #include <cstdint>
24
+ #include <memory>
23
25
  #include <optional>
24
26
  #include <string>
25
27
 
26
28
  namespace couchbase
27
29
  {
30
+ #ifndef COUCHBASE_CXX_CLIENT_DOXYGEN
31
+ class internal_manager_error_context;
32
+ #endif
33
+
28
34
  /**
29
35
  * The error context returned with manager operations.
30
36
  *
@@ -40,40 +46,25 @@ class manager_error_context : public error_context
40
46
  * @since 1.0.0
41
47
  * @committed
42
48
  */
43
- manager_error_context() = default;
49
+ manager_error_context();
50
+ explicit manager_error_context(internal_manager_error_context ctx);
51
+ manager_error_context(manager_error_context&& other);
52
+ manager_error_context& operator=(manager_error_context&& other);
53
+ manager_error_context(const manager_error_context& other) = delete;
54
+ manager_error_context& operator=(const manager_error_context& other) = delete;
55
+ ~manager_error_context() override;
44
56
 
45
- /**
46
- * Creates and initializes error context with given parameters.
47
- *
48
- * @param ec
49
- * @param last_dispatched_to
50
- * @param last_dispatched_from
51
- * @param retry_attempts
52
- * @param retry_reasons
53
- * @param client_context_id
54
- * @param http_status
55
- * @param content
56
- * @param path
57
- *
58
- * @since 1.0.0
59
- * @internal
60
- */
61
- manager_error_context(std::error_code ec,
62
- std::optional<std::string> last_dispatched_to,
63
- std::optional<std::string> last_dispatched_from,
64
- std::size_t retry_attempts,
65
- std::set<retry_reason> retry_reasons,
66
- std::string client_context_id,
67
- std::uint32_t http_status,
68
- std::string content,
69
- std::string path)
70
- : error_context{ {}, ec, std::move(last_dispatched_to), std::move(last_dispatched_from), retry_attempts, std::move(retry_reasons) }
71
- , client_context_id_{ std::move(client_context_id) }
72
- , http_status_{ http_status }
73
- , content_{ std::move(content) }
74
- , path_{ std::move(path) }
75
- {
76
- }
57
+ [[nodiscard]] auto ec() const -> std::error_code override;
58
+
59
+ [[nodiscard]] auto last_dispatched_to() const -> const std::optional<std::string>& override;
60
+
61
+ [[nodiscard]] auto last_dispatched_from() const -> const std::optional<std::string>& override;
62
+
63
+ [[nodiscard]] auto retry_attempts() const -> std::size_t override;
64
+
65
+ [[nodiscard]] auto retry_reasons() const -> const std::set<retry_reason>& override;
66
+
67
+ [[nodiscard]] auto retried_because_of(retry_reason reason) const -> bool override;
77
68
 
78
69
  /**
79
70
  * Returns request path.
@@ -83,10 +74,7 @@ class manager_error_context : public error_context
83
74
  * @since 1.0.0
84
75
  * @uncommitted
85
76
  */
86
- [[nodiscard]] auto path() const -> const std::string&
87
- {
88
- return path_;
89
- }
77
+ [[nodiscard]] auto path() const -> const std::string&;
90
78
 
91
79
  /**
92
80
  * Returns response body.
@@ -96,10 +84,7 @@ class manager_error_context : public error_context
96
84
  * @since 1.0.0
97
85
  * @committed
98
86
  */
99
- [[nodiscard]] auto content() const -> const std::string&
100
- {
101
- return content_;
102
- }
87
+ [[nodiscard]] auto content() const -> const std::string&;
103
88
 
104
89
  /**
105
90
  * Returns the unique
@@ -109,10 +94,7 @@ class manager_error_context : public error_context
109
94
  * @since 1.0.0
110
95
  * @uncommitted
111
96
  */
112
- [[nodiscard]] auto client_context_id() const -> const std::string&
113
- {
114
- return client_context_id_;
115
- }
97
+ [[nodiscard]] auto client_context_id() const -> const std::string&;
116
98
 
117
99
  /**
118
100
  * Returns HTTP status of response
@@ -122,15 +104,9 @@ class manager_error_context : public error_context
122
104
  * @since 1.0.0
123
105
  * @committed
124
106
  */
125
- [[nodiscard]] auto http_status() const -> std::uint32_t
126
- {
127
- return http_status_;
128
- }
107
+ [[nodiscard]] auto http_status() const -> std::uint32_t;
129
108
 
130
109
  private:
131
- std::string client_context_id_{};
132
- std::uint32_t http_status_{};
133
- std::string content_{};
134
- std::string path_{};
110
+ std::unique_ptr<internal_manager_error_context> internal_;
135
111
  };
136
112
  } // namespace couchbase