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.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/ext/couchbase/CMakeLists.txt +15 -1
- data/ext/couchbase/core/bucket.cxx +183 -152
- data/ext/couchbase/core/bucket.hxx +17 -4
- data/ext/couchbase/core/cluster.hxx +34 -13
- data/ext/couchbase/core/cluster_options.hxx +3 -0
- data/ext/couchbase/core/crud_component.cxx +51 -22
- data/ext/couchbase/core/error_context/key_value.cxx +2 -1
- data/ext/couchbase/core/error_context/key_value.hxx +10 -12
- data/ext/couchbase/core/impl/build_deferred_query_indexes.cxx +115 -50
- data/ext/couchbase/core/impl/cluster.cxx +6 -0
- data/ext/couchbase/core/impl/create_bucket.cxx +155 -0
- data/ext/couchbase/core/impl/create_query_index.cxx +172 -59
- data/ext/couchbase/core/impl/dns_srv_tracker.cxx +2 -1
- data/ext/couchbase/core/impl/drop_bucket.cxx +66 -0
- data/ext/couchbase/core/impl/drop_query_index.cxx +138 -59
- data/ext/couchbase/core/impl/flush_bucket.cxx +66 -0
- data/ext/couchbase/core/impl/get_all_buckets.cxx +163 -0
- data/ext/couchbase/core/impl/get_all_query_indexes.cxx +67 -37
- data/ext/couchbase/core/impl/get_bucket.cxx +153 -0
- data/ext/couchbase/core/impl/internal_manager_error_context.cxx +113 -0
- data/ext/couchbase/core/impl/internal_manager_error_context.hxx +60 -0
- data/ext/couchbase/core/impl/key_value_error_category.cxx +2 -4
- data/ext/couchbase/core/impl/key_value_error_context.cxx +98 -0
- data/ext/couchbase/core/impl/lookup_in.cxx +1 -0
- data/ext/couchbase/core/impl/lookup_in_all_replicas.cxx +176 -0
- data/ext/couchbase/core/impl/lookup_in_all_replicas.hxx +80 -0
- data/ext/couchbase/core/impl/lookup_in_any_replica.cxx +167 -0
- data/ext/couchbase/core/impl/lookup_in_any_replica.hxx +75 -0
- data/ext/couchbase/core/impl/lookup_in_replica.cxx +97 -0
- data/ext/couchbase/core/impl/lookup_in_replica.hxx +67 -0
- data/ext/couchbase/core/impl/manager_error_context.cxx +100 -0
- data/ext/couchbase/core/impl/query.cxx +1 -0
- data/ext/couchbase/core/impl/query_error_context.cxx +75 -0
- data/ext/couchbase/core/impl/update_bucket.cxx +130 -0
- data/ext/couchbase/core/impl/watch_query_indexes.cxx +53 -29
- data/ext/couchbase/core/io/dns_client.cxx +111 -40
- data/ext/couchbase/core/io/dns_config.cxx +5 -4
- data/ext/couchbase/core/io/http_session.hxx +24 -1
- data/ext/couchbase/core/io/mcbp_command.hxx +9 -2
- data/ext/couchbase/core/io/mcbp_session.cxx +80 -43
- data/ext/couchbase/core/io/mcbp_session.hxx +4 -3
- data/ext/couchbase/core/logger/custom_rotating_file_sink.cxx +1 -1
- data/ext/couchbase/core/logger/logger.cxx +80 -20
- data/ext/couchbase/core/logger/logger.hxx +31 -0
- data/ext/couchbase/core/meta/features.hxx +25 -0
- data/ext/couchbase/core/operations/document_lookup_in_all_replicas.hxx +192 -0
- data/ext/couchbase/core/operations/document_lookup_in_any_replica.hxx +188 -0
- data/ext/couchbase/core/operations/document_query.cxx +11 -0
- data/ext/couchbase/core/operations/document_query.hxx +1 -0
- data/ext/couchbase/core/operations.hxx +2 -0
- data/ext/couchbase/core/origin.cxx +270 -0
- data/ext/couchbase/core/origin.hxx +2 -0
- data/ext/couchbase/core/protocol/client_response.hxx +1 -0
- data/ext/couchbase/core/protocol/cmd_hello.hxx +1 -0
- data/ext/couchbase/core/protocol/cmd_lookup_in_replica.cxx +107 -0
- data/ext/couchbase/core/protocol/cmd_lookup_in_replica.hxx +137 -0
- data/ext/couchbase/core/protocol/hello_feature.hxx +6 -0
- data/ext/couchbase/core/protocol/hello_feature_fmt.hxx +3 -0
- data/ext/couchbase/core/protocol/status.cxx +2 -2
- data/ext/couchbase/core/range_scan_options.cxx +3 -27
- data/ext/couchbase/core/range_scan_options.hxx +13 -17
- data/ext/couchbase/core/range_scan_orchestrator.cxx +388 -170
- data/ext/couchbase/core/range_scan_orchestrator.hxx +13 -2
- data/ext/couchbase/core/range_scan_orchestrator_options.hxx +5 -3
- data/ext/couchbase/core/scan_options.hxx +0 -19
- data/ext/couchbase/core/scan_result.cxx +19 -5
- data/ext/couchbase/core/scan_result.hxx +5 -2
- data/ext/couchbase/core/timeout_defaults.hxx +2 -3
- data/ext/couchbase/core/topology/capabilities.hxx +3 -0
- data/ext/couchbase/core/topology/capabilities_fmt.hxx +8 -0
- data/ext/couchbase/core/topology/collections_manifest_fmt.hxx +1 -1
- data/ext/couchbase/core/topology/configuration.hxx +15 -0
- data/ext/couchbase/core/topology/configuration_json.hxx +6 -1
- data/ext/couchbase/core/utils/connection_string.cxx +62 -47
- data/ext/couchbase/core/utils/connection_string.hxx +1 -0
- data/ext/couchbase/couchbase/analytics_error_context.hxx +1 -1
- data/ext/couchbase/couchbase/behavior_options.hxx +19 -2
- data/ext/couchbase/couchbase/bucket_manager.hxx +135 -0
- data/ext/couchbase/couchbase/build_query_index_options.hxx +0 -30
- data/ext/couchbase/couchbase/cluster.hxx +14 -0
- data/ext/couchbase/couchbase/collection.hxx +111 -0
- data/ext/couchbase/couchbase/collection_query_index_manager.hxx +7 -48
- data/ext/couchbase/couchbase/create_bucket_options.hxx +41 -0
- data/ext/couchbase/couchbase/create_primary_query_index_options.hxx +0 -29
- data/ext/couchbase/couchbase/create_query_index_options.hxx +0 -33
- data/ext/couchbase/couchbase/drop_bucket_options.hxx +41 -0
- data/ext/couchbase/couchbase/drop_primary_query_index_options.hxx +0 -30
- data/ext/couchbase/couchbase/drop_query_index_options.hxx +0 -31
- data/ext/couchbase/couchbase/error_codes.hxx +1 -2
- data/ext/couchbase/couchbase/error_context.hxx +10 -2
- data/ext/couchbase/couchbase/flush_bucket_options.hxx +41 -0
- data/ext/couchbase/{core/topology/error_map_fmt.hxx → couchbase/fmt/key_value_error_map_attribute.hxx} +21 -21
- data/ext/couchbase/couchbase/get_all_buckets_options.hxx +44 -0
- data/ext/couchbase/couchbase/get_all_query_indexes_options.hxx +0 -30
- data/ext/couchbase/couchbase/get_and_lock_options.hxx +2 -2
- data/ext/couchbase/couchbase/get_and_touch_options.hxx +2 -2
- data/ext/couchbase/couchbase/get_bucket_options.hxx +43 -0
- data/ext/couchbase/couchbase/get_options.hxx +2 -2
- data/ext/couchbase/couchbase/insert_options.hxx +3 -3
- data/ext/couchbase/couchbase/key_value_error_context.hxx +7 -2
- data/ext/couchbase/couchbase/lookup_in_all_replicas_options.hxx +109 -0
- data/ext/couchbase/couchbase/lookup_in_any_replica_options.hxx +101 -0
- data/ext/couchbase/couchbase/lookup_in_options.hxx +2 -2
- data/ext/couchbase/couchbase/lookup_in_replica_result.hxx +74 -0
- data/ext/couchbase/couchbase/lookup_in_result.hxx +26 -0
- data/ext/couchbase/couchbase/management/bucket_settings.hxx +116 -0
- data/ext/couchbase/couchbase/manager_error_context.hxx +29 -53
- data/ext/couchbase/couchbase/mutate_in_options.hxx +2 -2
- data/ext/couchbase/couchbase/query_error_context.hxx +3 -1
- data/ext/couchbase/couchbase/query_index_manager.hxx +16 -83
- data/ext/couchbase/couchbase/query_options.hxx +18 -0
- data/ext/couchbase/couchbase/remove_options.hxx +2 -2
- data/ext/couchbase/couchbase/replace_options.hxx +3 -3
- data/ext/couchbase/couchbase/security_options.hxx +15 -0
- data/ext/couchbase/couchbase/subdocument_error_context.hxx +4 -2
- data/ext/couchbase/couchbase/touch_options.hxx +2 -2
- data/ext/couchbase/couchbase/unlock_options.hxx +2 -2
- data/ext/couchbase/couchbase/update_bucket_options.hxx +41 -0
- data/ext/couchbase/couchbase/upsert_options.hxx +3 -3
- data/ext/couchbase/couchbase/watch_query_indexes_options.hxx +0 -31
- data/ext/couchbase/test/CMakeLists.txt +1 -0
- data/ext/couchbase/test/test_integration_collections.cxx +6 -0
- data/ext/couchbase/test/test_integration_crud.cxx +5 -0
- data/ext/couchbase/test/test_integration_examples.cxx +137 -1
- data/ext/couchbase/test/test_integration_management.cxx +709 -266
- data/ext/couchbase/test/test_integration_query.cxx +19 -7
- data/ext/couchbase/test/test_integration_range_scan.cxx +351 -112
- data/ext/couchbase/test/test_integration_search.cxx +10 -1
- data/ext/couchbase/test/test_integration_subdoc.cxx +655 -0
- data/ext/couchbase/test/test_transaction_public_async_api.cxx +13 -12
- data/ext/couchbase/test/test_transaction_public_blocking_api.cxx +27 -21
- data/ext/couchbase/test/test_unit_connection_string.cxx +29 -0
- data/ext/couchbase/test/test_unit_query.cxx +75 -0
- data/ext/couchbase.cxx +583 -29
- data/ext/revisions.rb +3 -3
- data/lib/couchbase/cluster.rb +1 -1
- data/lib/couchbase/collection.rb +108 -0
- data/lib/couchbase/collection_options.rb +100 -0
- data/lib/couchbase/errors.rb +5 -0
- data/lib/couchbase/key_value_scan.rb +125 -0
- data/lib/couchbase/options.rb +151 -0
- data/lib/couchbase/scope.rb +1 -1
- data/lib/couchbase/utils/time.rb +14 -1
- data/lib/couchbase/version.rb +1 -1
- metadata +41 -7
- 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::
|
|
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
|
-
:
|
|
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
|
|
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::
|
|
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::
|
|
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::
|
|
37
|
+
case couchbase::key_value_error_map_attribute::success:
|
|
38
38
|
name = "success";
|
|
39
39
|
break;
|
|
40
|
-
case couchbase::
|
|
40
|
+
case couchbase::key_value_error_map_attribute::item_only:
|
|
41
41
|
name = "item-only";
|
|
42
42
|
break;
|
|
43
|
-
case couchbase::
|
|
43
|
+
case couchbase::key_value_error_map_attribute::invalid_input:
|
|
44
44
|
name = "invalid-input";
|
|
45
45
|
break;
|
|
46
|
-
case couchbase::
|
|
46
|
+
case couchbase::key_value_error_map_attribute::fetch_config:
|
|
47
47
|
name = "fetch-config";
|
|
48
48
|
break;
|
|
49
|
-
case couchbase::
|
|
49
|
+
case couchbase::key_value_error_map_attribute::conn_state_invalidated:
|
|
50
50
|
name = "conn-state-invalidated";
|
|
51
51
|
break;
|
|
52
|
-
case couchbase::
|
|
52
|
+
case couchbase::key_value_error_map_attribute::auth:
|
|
53
53
|
name = "auth";
|
|
54
54
|
break;
|
|
55
|
-
case couchbase::
|
|
55
|
+
case couchbase::key_value_error_map_attribute::special_handling:
|
|
56
56
|
name = "special-handling";
|
|
57
57
|
break;
|
|
58
|
-
case couchbase::
|
|
58
|
+
case couchbase::key_value_error_map_attribute::support:
|
|
59
59
|
name = "support";
|
|
60
60
|
break;
|
|
61
|
-
case couchbase::
|
|
61
|
+
case couchbase::key_value_error_map_attribute::temp:
|
|
62
62
|
name = "temp";
|
|
63
63
|
break;
|
|
64
|
-
case couchbase::
|
|
64
|
+
case couchbase::key_value_error_map_attribute::internal:
|
|
65
65
|
name = "internal";
|
|
66
66
|
break;
|
|
67
|
-
case couchbase::
|
|
67
|
+
case couchbase::key_value_error_map_attribute::retry_now:
|
|
68
68
|
name = "retry-now";
|
|
69
69
|
break;
|
|
70
|
-
case couchbase::
|
|
70
|
+
case couchbase::key_value_error_map_attribute::retry_later:
|
|
71
71
|
name = "retry-later";
|
|
72
72
|
break;
|
|
73
|
-
case couchbase::
|
|
73
|
+
case couchbase::key_value_error_map_attribute::subdoc:
|
|
74
74
|
name = "subdoc";
|
|
75
75
|
break;
|
|
76
|
-
case couchbase::
|
|
76
|
+
case couchbase::key_value_error_map_attribute::dcp:
|
|
77
77
|
name = "dcp";
|
|
78
78
|
break;
|
|
79
|
-
case couchbase::
|
|
79
|
+
case couchbase::key_value_error_map_attribute::auto_retry:
|
|
80
80
|
name = "auto-retry";
|
|
81
81
|
break;
|
|
82
|
-
case couchbase::
|
|
82
|
+
case couchbase::key_value_error_map_attribute::item_locked:
|
|
83
83
|
name = "item-locked";
|
|
84
84
|
break;
|
|
85
|
-
case couchbase::
|
|
85
|
+
case couchbase::key_value_error_map_attribute::item_deleted:
|
|
86
86
|
name = "item-deleted";
|
|
87
87
|
break;
|
|
88
|
-
case couchbase::
|
|
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::
|
|
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,
|
|
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
|