couchbase 3.4.1 → 3.4.3
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 +59 -7
- data/ext/couchbase/cmake/Documentation.cmake +0 -1
- data/ext/couchbase/cmake/OpenSSL.cmake +98 -3
- data/ext/couchbase/cmake/Testing.cmake +12 -4
- data/ext/couchbase/cmake/ThirdPartyDependencies.cmake +4 -0
- data/ext/couchbase/cmake/build_config.hxx.in +3 -0
- data/ext/couchbase/core/bucket.cxx +3 -2
- data/ext/couchbase/core/bucket.hxx +9 -0
- data/ext/couchbase/core/cluster.hxx +17 -0
- data/ext/couchbase/core/cluster_options.cxx +2 -2
- data/ext/couchbase/core/cluster_options.hxx +4 -7
- data/ext/couchbase/core/{config_profile.cxx → cluster_options_fwd.hxx} +7 -6
- data/ext/couchbase/core/config_profile.hxx +2 -65
- data/ext/couchbase/core/config_profiles.cxx +79 -0
- data/ext/couchbase/core/config_profiles.hxx +56 -0
- data/ext/couchbase/core/error_context/search.hxx +1 -1
- data/ext/couchbase/core/impl/analytics.cxx +237 -0
- data/ext/couchbase/core/impl/boolean_field_query.cxx +40 -0
- data/ext/couchbase/core/impl/boolean_query.cxx +62 -0
- data/ext/couchbase/core/impl/cluster.cxx +2 -1
- data/ext/couchbase/core/impl/conjunction_query.cxx +51 -0
- data/ext/couchbase/core/impl/date_range.cxx +89 -0
- data/ext/couchbase/core/impl/date_range_facet.cxx +54 -0
- data/ext/couchbase/core/impl/date_range_facet_result.cxx +64 -0
- data/ext/couchbase/core/impl/date_range_query.cxx +125 -0
- data/ext/couchbase/core/impl/disjunction_query.cxx +51 -0
- data/ext/couchbase/core/impl/dns_srv_tracker.cxx +5 -3
- data/ext/couchbase/core/impl/encoded_search_facet.hxx +29 -0
- data/ext/couchbase/core/impl/encoded_search_query.hxx +29 -0
- data/ext/couchbase/core/impl/encoded_search_sort.hxx +29 -0
- data/ext/couchbase/core/impl/geo_bounding_box_query.cxx +46 -0
- data/ext/couchbase/core/impl/geo_distance_query.cxx +43 -0
- data/ext/couchbase/core/impl/geo_polygon_query.cxx +46 -0
- data/ext/couchbase/core/impl/internal_date_range_facet_result.cxx +80 -0
- data/ext/couchbase/core/impl/internal_date_range_facet_result.hxx +48 -0
- data/ext/couchbase/core/impl/internal_numeric_range_facet_result.cxx +80 -0
- data/ext/couchbase/core/impl/internal_numeric_range_facet_result.hxx +48 -0
- data/ext/couchbase/core/impl/internal_search_error_context.cxx +141 -0
- data/ext/couchbase/core/impl/internal_search_error_context.hxx +61 -0
- data/ext/couchbase/core/impl/internal_search_meta_data.cxx +60 -0
- data/ext/couchbase/core/impl/internal_search_meta_data.hxx +41 -0
- data/ext/couchbase/core/impl/internal_search_result.cxx +84 -0
- data/ext/couchbase/core/impl/internal_search_result.hxx +43 -0
- data/ext/couchbase/core/impl/internal_search_row.cxx +82 -0
- data/ext/couchbase/core/impl/internal_search_row.hxx +56 -0
- data/ext/couchbase/core/impl/internal_search_row_location.hxx +32 -0
- data/ext/couchbase/core/impl/internal_search_row_locations.cxx +137 -0
- data/ext/couchbase/core/impl/internal_search_row_locations.hxx +45 -0
- data/ext/couchbase/core/impl/internal_term_facet_result.cxx +80 -0
- data/ext/couchbase/core/impl/internal_term_facet_result.hxx +48 -0
- data/ext/couchbase/core/impl/match_all_query.cxx +35 -0
- data/ext/couchbase/core/impl/match_none_query.cxx +35 -0
- data/ext/couchbase/core/impl/match_phrase_query.cxx +43 -0
- data/ext/couchbase/core/impl/match_query.cxx +59 -0
- data/ext/couchbase/core/impl/numeric_range.cxx +49 -0
- data/ext/couchbase/core/impl/numeric_range_facet.cxx +54 -0
- data/ext/couchbase/core/impl/numeric_range_facet_result.cxx +64 -0
- data/ext/couchbase/core/impl/numeric_range_query.cxx +56 -0
- data/ext/couchbase/core/impl/phrase_query.cxx +42 -0
- data/ext/couchbase/core/impl/prefix_query.cxx +40 -0
- data/ext/couchbase/core/impl/query.cxx +5 -5
- data/ext/couchbase/core/impl/query_string_query.cxx +37 -0
- data/ext/couchbase/core/impl/regexp_query.cxx +40 -0
- data/ext/couchbase/core/impl/search.cxx +191 -0
- data/ext/couchbase/core/impl/search_error_context.cxx +147 -0
- data/ext/couchbase/core/impl/search_meta_data.cxx +46 -0
- data/ext/couchbase/core/impl/search_result.cxx +66 -0
- data/ext/couchbase/core/impl/search_row.cxx +74 -0
- data/ext/couchbase/core/impl/search_row_location.cxx +64 -0
- data/ext/couchbase/core/impl/search_row_locations.cxx +66 -0
- data/ext/couchbase/core/impl/search_sort_field.cxx +104 -0
- data/ext/couchbase/core/impl/search_sort_id.cxx +43 -0
- data/ext/couchbase/core/impl/search_sort_score.cxx +43 -0
- data/ext/couchbase/core/impl/term_facet.cxx +36 -0
- data/ext/couchbase/core/impl/term_facet_result.cxx +64 -0
- data/ext/couchbase/core/impl/term_query.cxx +56 -0
- data/ext/couchbase/core/impl/term_range_query.cxx +57 -0
- data/ext/couchbase/core/impl/wildcard_query.cxx +40 -0
- data/ext/couchbase/core/io/dns_client.cxx +225 -0
- data/ext/couchbase/core/io/dns_client.hxx +19 -188
- data/ext/couchbase/core/io/http_context.hxx +1 -1
- data/ext/couchbase/core/io/http_session.hxx +10 -0
- data/ext/couchbase/core/io/http_session_manager.hxx +5 -3
- data/ext/couchbase/core/io/mcbp_session.cxx +28 -1
- data/ext/couchbase/core/io/retry_orchestrator.hxx +3 -2
- data/ext/couchbase/core/json_string.hxx +5 -0
- data/ext/couchbase/core/meta/version.cxx +18 -4
- data/ext/couchbase/core/mozilla_ca_bundle.hxx +39 -0
- data/ext/couchbase/core/operations/document_analytics.cxx +1 -0
- data/ext/couchbase/core/operations/document_analytics.hxx +1 -0
- data/ext/couchbase/core/operations/document_append.hxx +1 -1
- data/ext/couchbase/core/operations/document_decrement.hxx +1 -1
- data/ext/couchbase/core/operations/document_exists.hxx +1 -1
- data/ext/couchbase/core/operations/document_get.hxx +1 -1
- data/ext/couchbase/core/operations/document_get_and_lock.hxx +1 -1
- data/ext/couchbase/core/operations/document_get_and_touch.hxx +1 -1
- data/ext/couchbase/core/operations/document_get_projected.hxx +1 -1
- data/ext/couchbase/core/operations/document_increment.hxx +1 -1
- data/ext/couchbase/core/operations/document_insert.hxx +1 -1
- data/ext/couchbase/core/operations/document_lookup_in.hxx +1 -1
- data/ext/couchbase/core/operations/document_mutate_in.hxx +1 -1
- data/ext/couchbase/core/operations/document_prepend.hxx +1 -1
- data/ext/couchbase/core/operations/document_query.cxx +2 -0
- data/ext/couchbase/core/operations/document_query.hxx +6 -0
- data/ext/couchbase/core/operations/document_remove.hxx +1 -1
- data/ext/couchbase/core/operations/document_replace.hxx +1 -1
- data/ext/couchbase/core/operations/document_search.cxx +4 -1
- data/ext/couchbase/core/operations/document_search.hxx +2 -1
- data/ext/couchbase/core/operations/document_touch.hxx +1 -1
- data/ext/couchbase/core/operations/document_unlock.hxx +1 -1
- data/ext/couchbase/core/operations/document_upsert.hxx +1 -1
- data/ext/couchbase/core/operations/document_view.hxx +1 -0
- data/ext/couchbase/core/protocol/client_request.hxx +11 -2
- data/ext/couchbase/core/public_fwd.hxx +21 -0
- data/ext/couchbase/core/tls_verify_mode.hxx +26 -0
- data/ext/couchbase/core/topology/configuration.cxx +15 -2
- data/ext/couchbase/core/topology/configuration.hxx +5 -1
- data/ext/couchbase/core/transactions/active_transaction_record.hxx +2 -2
- data/ext/couchbase/core/transactions/attempt_context_impl.cxx +3 -0
- data/ext/couchbase/core/transactions/attempt_context_impl.hxx +1 -1
- data/ext/couchbase/core/transactions/attempt_context_testing_hooks.cxx +93 -0
- data/ext/couchbase/core/transactions/attempt_context_testing_hooks.hxx +48 -75
- data/ext/couchbase/core/transactions/cleanup_testing_hooks.cxx +52 -0
- data/ext/couchbase/core/transactions/cleanup_testing_hooks.hxx +17 -31
- data/ext/couchbase/core/transactions/exceptions.hxx +12 -9
- data/ext/couchbase/core/transactions/internal/transaction_context.hxx +12 -12
- data/ext/couchbase/core/transactions/internal/transactions_cleanup.hxx +7 -1
- data/ext/couchbase/core/transactions/transaction_context.cxx +1 -0
- data/ext/couchbase/core/transactions/transactions_cleanup.cxx +144 -155
- data/ext/couchbase/core/utils/connection_string.cxx +27 -3
- data/ext/couchbase/core/utils/connection_string.hxx +3 -3
- data/ext/couchbase/core/utils/json.cxx +4 -1
- data/ext/couchbase/couchbase/analytics_error_context.hxx +143 -0
- data/ext/couchbase/couchbase/analytics_meta_data.hxx +155 -0
- data/ext/couchbase/couchbase/analytics_metrics.hxx +163 -0
- data/ext/couchbase/couchbase/analytics_options.hxx +359 -0
- data/ext/couchbase/couchbase/analytics_result.hxx +102 -0
- data/ext/couchbase/couchbase/analytics_scan_consistency.hxx +46 -0
- data/ext/couchbase/couchbase/analytics_status.hxx +41 -0
- data/ext/couchbase/couchbase/analytics_warning.hxx +85 -0
- data/ext/couchbase/couchbase/behavior_options.hxx +10 -1
- data/ext/couchbase/couchbase/boolean_field_query.hxx +77 -0
- data/ext/couchbase/couchbase/boolean_query.hxx +223 -0
- data/ext/couchbase/couchbase/cluster.hxx +75 -1
- data/ext/couchbase/couchbase/conjunction_query.hxx +88 -0
- data/ext/couchbase/couchbase/date_range.hxx +69 -0
- data/ext/couchbase/couchbase/date_range_facet.hxx +56 -0
- data/ext/couchbase/couchbase/date_range_facet_result.hxx +55 -0
- data/ext/couchbase/couchbase/date_range_query.hxx +265 -0
- data/ext/couchbase/couchbase/disjunction_query.hxx +109 -0
- data/ext/couchbase/couchbase/doc_id_query.hxx +111 -0
- data/ext/couchbase/couchbase/error_context.hxx +7 -6
- data/ext/couchbase/couchbase/fmt/analytics_scan_consistency.hxx +52 -0
- data/ext/couchbase/couchbase/fmt/analytics_status.hxx +76 -0
- data/ext/couchbase/couchbase/fmt/search_scan_consistency.hxx +49 -0
- data/ext/couchbase/couchbase/geo_bounding_box_query.hxx +107 -0
- data/ext/couchbase/couchbase/geo_distance_query.hxx +109 -0
- data/ext/couchbase/couchbase/geo_point.hxx +32 -0
- data/ext/couchbase/couchbase/geo_polygon_query.hxx +85 -0
- data/ext/couchbase/couchbase/highlight_style.hxx +45 -0
- data/ext/couchbase/couchbase/match_all_query.hxx +43 -0
- data/ext/couchbase/couchbase/match_none_query.hxx +43 -0
- data/ext/couchbase/couchbase/match_operator.hxx +45 -0
- data/ext/couchbase/couchbase/match_phrase_query.hxx +108 -0
- data/ext/couchbase/couchbase/match_query.hxx +163 -0
- data/ext/couchbase/couchbase/numeric_range.hxx +58 -0
- data/ext/couchbase/couchbase/numeric_range_facet.hxx +56 -0
- data/ext/couchbase/couchbase/numeric_range_facet_result.hxx +55 -0
- data/ext/couchbase/couchbase/numeric_range_query.hxx +143 -0
- data/ext/couchbase/couchbase/phrase_query.hxx +93 -0
- data/ext/couchbase/couchbase/prefix_query.hxx +82 -0
- data/ext/couchbase/couchbase/query_options.hxx +0 -1
- data/ext/couchbase/couchbase/query_string_query.hxx +72 -0
- data/ext/couchbase/couchbase/regexp_query.hxx +82 -0
- data/ext/couchbase/couchbase/scope.hxx +73 -0
- data/ext/couchbase/couchbase/search_date_range.hxx +68 -0
- data/ext/couchbase/couchbase/search_error_context.hxx +138 -0
- data/ext/couchbase/couchbase/search_facet.hxx +60 -0
- data/ext/couchbase/couchbase/search_facet_result.hxx +50 -0
- data/ext/couchbase/couchbase/search_meta_data.hxx +85 -0
- data/ext/couchbase/couchbase/search_metrics.hxx +127 -0
- data/ext/couchbase/couchbase/search_numeric_range.hxx +69 -0
- data/ext/couchbase/couchbase/search_options.hxx +509 -0
- data/ext/couchbase/couchbase/search_query.hxx +69 -0
- data/ext/couchbase/couchbase/search_result.hxx +77 -0
- data/ext/couchbase/couchbase/search_row.hxx +104 -0
- data/ext/couchbase/couchbase/search_row_location.hxx +55 -0
- data/ext/couchbase/couchbase/search_row_locations.hxx +86 -0
- data/ext/couchbase/couchbase/search_scan_consistency.hxx +34 -0
- data/ext/couchbase/couchbase/search_sort.hxx +58 -0
- data/ext/couchbase/couchbase/search_sort_field.hxx +117 -0
- data/ext/couchbase/couchbase/search_sort_field_missing.hxx +26 -0
- data/ext/couchbase/couchbase/search_sort_field_mode.hxx +27 -0
- data/ext/couchbase/couchbase/search_sort_field_type.hxx +28 -0
- data/ext/couchbase/couchbase/search_sort_id.hxx +60 -0
- data/ext/couchbase/couchbase/search_sort_score.hxx +60 -0
- data/ext/couchbase/couchbase/search_term_range.hxx +51 -0
- data/ext/couchbase/couchbase/security_options.hxx +3 -0
- data/ext/couchbase/couchbase/term_facet.hxx +48 -0
- data/ext/couchbase/couchbase/term_facet_result.hxx +55 -0
- data/ext/couchbase/couchbase/term_query.hxx +151 -0
- data/ext/couchbase/couchbase/term_range_query.hxx +142 -0
- data/ext/couchbase/couchbase/tracing/request_span.hxx +63 -0
- data/ext/couchbase/couchbase/tracing/request_tracer.hxx +2 -40
- data/ext/couchbase/couchbase/transactions/async_attempt_context.hxx +83 -4
- data/ext/couchbase/couchbase/transactions/attempt_context.hxx +68 -1
- data/ext/couchbase/couchbase/transactions/transaction_get_result.hxx +2 -0
- data/ext/couchbase/couchbase/transactions/transaction_keyspace.hxx +11 -1
- data/ext/couchbase/couchbase/transactions/transaction_options.hxx +79 -8
- data/ext/couchbase/couchbase/transactions/transaction_query_options.hxx +128 -15
- data/ext/couchbase/couchbase/transactions/transaction_query_result.hxx +4 -0
- data/ext/couchbase/couchbase/transactions/transaction_result.hxx +1 -1
- data/ext/couchbase/couchbase/transactions/transactions_cleanup_config.hxx +5 -3
- data/ext/couchbase/couchbase/transactions/transactions_config.hxx +9 -5
- data/ext/couchbase/couchbase/transactions/transactions_query_config.hxx +6 -3
- data/ext/couchbase/couchbase/transactions.hxx +34 -1
- data/ext/couchbase/couchbase/wildcard_query.hxx +83 -0
- data/ext/couchbase/test/CMakeLists.txt +8 -7
- data/ext/couchbase/test/benchmark_helper_integration.hxx +2 -2
- data/ext/couchbase/test/test_helper.hxx +6 -6
- data/ext/couchbase/test/test_integration_analytics.cxx +314 -16
- data/ext/couchbase/test/test_integration_collections.cxx +7 -3
- data/ext/couchbase/test/test_integration_connect.cxx +7 -3
- data/ext/couchbase/test/test_integration_crud.cxx +19 -2
- data/ext/couchbase/test/test_integration_diagnostics.cxx +11 -5
- data/ext/couchbase/test/test_integration_durability.cxx +12 -7
- data/ext/couchbase/test/test_integration_examples.cxx +324 -11
- data/ext/couchbase/test/test_integration_management.cxx +162 -94
- data/ext/couchbase/test/test_integration_query.cxx +68 -10
- data/ext/couchbase/test/test_integration_range_scan.cxx +12 -12
- data/ext/couchbase/test/test_integration_read_replica.cxx +48 -11
- data/ext/couchbase/test/test_integration_search.cxx +621 -0
- data/ext/couchbase/test/test_integration_subdoc.cxx +62 -11
- data/ext/couchbase/test/test_integration_tracer.cxx +5 -0
- data/ext/couchbase/test/test_integration_transcoders.cxx +13 -5
- data/ext/couchbase/test/{test_transaction_transaction_context.cxx → test_transaction_context.cxx} +1 -1
- data/ext/couchbase/test/test_transaction_examples.cxx +195 -0
- data/ext/couchbase/test/{test_transaction_transaction_simple.cxx → test_transaction_simple.cxx} +90 -5
- data/ext/couchbase/test/{test_transaction_transaction_simple_async.cxx → test_transaction_simple_async.cxx} +19 -21
- data/ext/couchbase/test/test_unit_config_profiles.cxx +13 -13
- data/ext/couchbase/test/test_unit_connection_string.cxx +35 -0
- data/ext/couchbase/test/test_unit_json_transcoder.cxx +4 -0
- data/ext/couchbase/test/test_unit_search.cxx +427 -0
- data/ext/couchbase/test/test_unit_transaction_utils.cxx +10 -1
- data/ext/couchbase/test/test_unit_utils.cxx +8 -4
- data/ext/couchbase/third_party/snappy/CMakeLists.txt +150 -27
- data/ext/couchbase/third_party/snappy/cmake/config.h.in +28 -24
- data/ext/couchbase/third_party/snappy/snappy-internal.h +189 -25
- data/ext/couchbase/third_party/snappy/snappy-sinksource.cc +26 -9
- data/ext/couchbase/third_party/snappy/snappy-sinksource.h +11 -11
- data/ext/couchbase/third_party/snappy/snappy-stubs-internal.cc +1 -1
- data/ext/couchbase/third_party/snappy/snappy-stubs-internal.h +227 -308
- data/ext/couchbase/third_party/snappy/snappy-stubs-public.h.in +0 -11
- data/ext/couchbase/third_party/snappy/snappy.cc +1176 -410
- data/ext/couchbase/third_party/snappy/snappy.h +19 -4
- data/ext/couchbase.cxx +85 -22
- data/ext/revisions.rb +3 -3
- data/lib/couchbase/authenticator.rb +0 -1
- data/lib/couchbase/cluster.rb +13 -13
- data/lib/couchbase/cluster_registry.rb +7 -2
- data/lib/couchbase/config_profiles.rb +1 -1
- data/lib/couchbase/configuration.rb +3 -4
- data/lib/couchbase/json_transcoder.rb +12 -5
- data/lib/couchbase/management/collection_query_index_manager.rb +54 -15
- data/lib/couchbase/management/query_index_manager.rb +70 -5
- data/lib/couchbase/options.rb +85 -2
- data/lib/couchbase/raw_binary_transcoder.rb +37 -0
- data/lib/couchbase/raw_json_transcoder.rb +38 -0
- data/lib/couchbase/raw_string_transcoder.rb +40 -0
- data/lib/couchbase/search_options.rb +163 -240
- data/lib/couchbase/transcoder_flags.rb +62 -0
- data/lib/couchbase/version.rb +1 -1
- metadata +151 -12
- data/ext/couchbase/core/CMakeLists.txt +0 -0
- /data/ext/couchbase/test/{test_transaction_transaction_public_async_api.cxx → test_transaction_public_async_api.cxx} +0 -0
- /data/ext/couchbase/test/{test_transaction_transaction_public_blocking_api.cxx → test_transaction_public_blocking_api.cxx} +0 -0
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2023-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
|
+
#include "encoded_search_query.hxx"
|
|
19
|
+
|
|
20
|
+
#include <couchbase/numeric_range_query.hxx>
|
|
21
|
+
|
|
22
|
+
#include <couchbase/error_codes.hxx>
|
|
23
|
+
|
|
24
|
+
namespace couchbase
|
|
25
|
+
{
|
|
26
|
+
auto
|
|
27
|
+
numeric_range_query::encode() const -> encoded_search_query
|
|
28
|
+
{
|
|
29
|
+
if (!min_ && !max_) {
|
|
30
|
+
return { errc::common::invalid_argument };
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
encoded_search_query built;
|
|
34
|
+
built.query = tao::json::empty_object;
|
|
35
|
+
if (boost_) {
|
|
36
|
+
built.query["boost"] = boost_.value();
|
|
37
|
+
}
|
|
38
|
+
if (field_) {
|
|
39
|
+
built.query["field"] = field_.value();
|
|
40
|
+
}
|
|
41
|
+
if (min_.has_value()) {
|
|
42
|
+
built.query["min"] = min_.value();
|
|
43
|
+
if (inclusive_min_.has_value()) {
|
|
44
|
+
built.query["inclusive_min"] = inclusive_min_.value();
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (max_.has_value()) {
|
|
48
|
+
built.query["max"] = max_.value();
|
|
49
|
+
if (inclusive_max_.has_value()) {
|
|
50
|
+
built.query["inclusive_max"] = inclusive_max_.value();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
return built;
|
|
55
|
+
}
|
|
56
|
+
} // namespace couchbase
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2023-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
|
+
#include "encoded_search_query.hxx"
|
|
19
|
+
|
|
20
|
+
#include <couchbase/phrase_query.hxx>
|
|
21
|
+
|
|
22
|
+
#include <tao/json/contrib/traits.hpp>
|
|
23
|
+
|
|
24
|
+
namespace couchbase
|
|
25
|
+
{
|
|
26
|
+
auto
|
|
27
|
+
phrase_query::encode() const -> encoded_search_query
|
|
28
|
+
{
|
|
29
|
+
encoded_search_query built;
|
|
30
|
+
built.query = tao::json::empty_object;
|
|
31
|
+
if (boost_) {
|
|
32
|
+
built.query["boost"] = boost_.value();
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
built.query["terms"] = terms_;
|
|
36
|
+
if (field_) {
|
|
37
|
+
built.query["field"] = field_.value();
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
return built;
|
|
41
|
+
}
|
|
42
|
+
} // namespace couchbase
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2023-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
|
+
#include "encoded_search_query.hxx"
|
|
19
|
+
|
|
20
|
+
#include <couchbase/prefix_query.hxx>
|
|
21
|
+
|
|
22
|
+
namespace couchbase
|
|
23
|
+
{
|
|
24
|
+
auto
|
|
25
|
+
prefix_query::encode() const -> encoded_search_query
|
|
26
|
+
{
|
|
27
|
+
encoded_search_query built;
|
|
28
|
+
built.query = tao::json::empty_object;
|
|
29
|
+
if (boost_) {
|
|
30
|
+
built.query["boost"] = boost_.value();
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
built.query["prefix"] = prefix_;
|
|
34
|
+
if (field_) {
|
|
35
|
+
built.query["field"] = field_.value();
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return built;
|
|
39
|
+
}
|
|
40
|
+
} // namespace couchbase
|
|
@@ -152,10 +152,10 @@ build_result(operations::query_response& resp)
|
|
|
152
152
|
}
|
|
153
153
|
|
|
154
154
|
static core::operations::query_request
|
|
155
|
-
build_query_request(query_options::built options)
|
|
155
|
+
build_query_request(std::string statement, query_options::built options)
|
|
156
156
|
{
|
|
157
157
|
operations::query_request request{
|
|
158
|
-
|
|
158
|
+
std::move(statement),
|
|
159
159
|
options.adhoc,
|
|
160
160
|
options.metrics,
|
|
161
161
|
options.readonly,
|
|
@@ -222,8 +222,9 @@ build_transaction_query_result(operations::query_response resp, std::error_code
|
|
|
222
222
|
core::operations::query_request
|
|
223
223
|
build_transaction_query_request(query_options::built opts)
|
|
224
224
|
{
|
|
225
|
-
return build_query_request(opts);
|
|
225
|
+
return build_query_request("", opts);
|
|
226
226
|
}
|
|
227
|
+
|
|
227
228
|
void
|
|
228
229
|
initiate_query_operation(std::shared_ptr<couchbase::core::cluster> core,
|
|
229
230
|
std::string statement,
|
|
@@ -231,8 +232,7 @@ initiate_query_operation(std::shared_ptr<couchbase::core::cluster> core,
|
|
|
231
232
|
query_options::built options,
|
|
232
233
|
query_handler&& handler)
|
|
233
234
|
{
|
|
234
|
-
auto request = build_query_request(options);
|
|
235
|
-
request.statement = std::move(statement);
|
|
235
|
+
auto request = build_query_request(std::move(statement), options);
|
|
236
236
|
if (query_context) {
|
|
237
237
|
request.query_context = std::move(query_context);
|
|
238
238
|
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2023-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
|
+
#include "encoded_search_query.hxx"
|
|
19
|
+
|
|
20
|
+
#include <couchbase/query_string_query.hxx>
|
|
21
|
+
|
|
22
|
+
namespace couchbase
|
|
23
|
+
{
|
|
24
|
+
auto
|
|
25
|
+
query_string_query::encode() const -> encoded_search_query
|
|
26
|
+
{
|
|
27
|
+
encoded_search_query built;
|
|
28
|
+
|
|
29
|
+
built.query = tao::json::empty_object;
|
|
30
|
+
if (boost_) {
|
|
31
|
+
built.query["boost"] = boost_.value();
|
|
32
|
+
}
|
|
33
|
+
built.query["query"] = query_;
|
|
34
|
+
|
|
35
|
+
return built;
|
|
36
|
+
}
|
|
37
|
+
} // namespace couchbase
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2023-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
|
+
#include "encoded_search_query.hxx"
|
|
19
|
+
|
|
20
|
+
#include <couchbase/regexp_query.hxx>
|
|
21
|
+
|
|
22
|
+
namespace couchbase
|
|
23
|
+
{
|
|
24
|
+
auto
|
|
25
|
+
regexp_query::encode() const -> encoded_search_query
|
|
26
|
+
{
|
|
27
|
+
encoded_search_query built;
|
|
28
|
+
built.query = tao::json::empty_object;
|
|
29
|
+
if (boost_) {
|
|
30
|
+
built.query["boost"] = boost_.value();
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
built.query["regexp"] = regexp_;
|
|
34
|
+
if (field_) {
|
|
35
|
+
built.query["field"] = field_.value();
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return built;
|
|
39
|
+
}
|
|
40
|
+
} // namespace couchbase
|
|
@@ -0,0 +1,191 @@
|
|
|
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
|
+
#include <couchbase/cluster.hxx>
|
|
19
|
+
#include <couchbase/error_codes.hxx>
|
|
20
|
+
#include <couchbase/scope.hxx>
|
|
21
|
+
|
|
22
|
+
#include "core/cluster.hxx"
|
|
23
|
+
#include "core/operations/document_search.hxx"
|
|
24
|
+
#include "core/utils/json.hxx"
|
|
25
|
+
#include "encoded_search_facet.hxx"
|
|
26
|
+
#include "encoded_search_query.hxx"
|
|
27
|
+
#include "encoded_search_sort.hxx"
|
|
28
|
+
#include "internal_date_range_facet_result.hxx"
|
|
29
|
+
#include "internal_numeric_range_facet_result.hxx"
|
|
30
|
+
#include "internal_search_error_context.hxx"
|
|
31
|
+
#include "internal_search_meta_data.hxx"
|
|
32
|
+
#include "internal_search_result.hxx"
|
|
33
|
+
#include "internal_search_row.hxx"
|
|
34
|
+
#include "internal_search_row_location.hxx"
|
|
35
|
+
#include "internal_search_row_locations.hxx"
|
|
36
|
+
#include "internal_term_facet_result.hxx"
|
|
37
|
+
|
|
38
|
+
namespace couchbase
|
|
39
|
+
{
|
|
40
|
+
static std::optional<core::search_highlight_style>
|
|
41
|
+
map_highlight_style(const std::optional<couchbase::highlight_style>& style)
|
|
42
|
+
{
|
|
43
|
+
if (style) {
|
|
44
|
+
switch (style.value()) {
|
|
45
|
+
case highlight_style::html:
|
|
46
|
+
return core::search_highlight_style::html;
|
|
47
|
+
case highlight_style::ansi:
|
|
48
|
+
return core::search_highlight_style::ansi;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
return {};
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
static std::optional<core::search_scan_consistency>
|
|
55
|
+
map_scan_consistency(const std::optional<couchbase::search_scan_consistency>& scan_consistency)
|
|
56
|
+
{
|
|
57
|
+
if (scan_consistency == search_scan_consistency::not_bounded) {
|
|
58
|
+
return core::search_scan_consistency::not_bounded;
|
|
59
|
+
}
|
|
60
|
+
return {};
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
static std::vector<std::string>
|
|
64
|
+
map_sort(const std::vector<std::shared_ptr<search_sort>>& sort, const std::vector<std::string>& sort_string)
|
|
65
|
+
{
|
|
66
|
+
std::vector<std::string> sort_specs{};
|
|
67
|
+
sort_specs.reserve(sort.size() + sort_string.size());
|
|
68
|
+
|
|
69
|
+
for (const auto& s : sort) {
|
|
70
|
+
auto encoded = s->encode();
|
|
71
|
+
if (encoded.ec) {
|
|
72
|
+
throw std::system_error(encoded.ec, "unable to encode search sort object");
|
|
73
|
+
}
|
|
74
|
+
sort_specs.emplace_back(core::utils::json::generate(encoded.sort));
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
for (const auto& s : sort_string) {
|
|
78
|
+
sort_specs.emplace_back(core::utils::json::generate(s));
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
return sort_specs;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
static std::map<std::string, std::string>
|
|
85
|
+
map_facets(const std::map<std::string, std::shared_ptr<search_facet>, std::less<>>& facets)
|
|
86
|
+
{
|
|
87
|
+
std::map<std::string, std::string> core_facets{};
|
|
88
|
+
|
|
89
|
+
for (const auto& [name, f] : facets) {
|
|
90
|
+
auto encoded = f->encode();
|
|
91
|
+
if (encoded.ec) {
|
|
92
|
+
throw std::system_error(encoded.ec, "unable to encode search facet object in request");
|
|
93
|
+
}
|
|
94
|
+
core_facets[name] = core::utils::json::generate(encoded.facet);
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
return core_facets;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
static std::map<std::string, couchbase::core::json_string>
|
|
101
|
+
map_raw(std::map<std::string, codec::binary, std::less<>>& raw)
|
|
102
|
+
{
|
|
103
|
+
std::map<std::string, couchbase::core::json_string> core_raw{};
|
|
104
|
+
for (const auto& [name, value] : raw) {
|
|
105
|
+
core_raw[name] = value;
|
|
106
|
+
}
|
|
107
|
+
return core_raw;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
static core::operations::search_request
|
|
111
|
+
build_search_request(std::string index_name,
|
|
112
|
+
const search_query& query,
|
|
113
|
+
search_options::built options,
|
|
114
|
+
std::optional<std::string> /* bucket_name */,
|
|
115
|
+
std::optional<std::string> /* scope_name */)
|
|
116
|
+
{
|
|
117
|
+
auto encoded = query.encode();
|
|
118
|
+
if (encoded.ec) {
|
|
119
|
+
throw std::system_error(encoded.ec, fmt::format("unable to encode search query for index \"{}\"", index_name));
|
|
120
|
+
}
|
|
121
|
+
core::operations::search_request request{
|
|
122
|
+
std::move(index_name),
|
|
123
|
+
core::utils::json::generate_binary(encoded.query),
|
|
124
|
+
options.limit,
|
|
125
|
+
options.skip,
|
|
126
|
+
options.explain,
|
|
127
|
+
options.disable_scoring,
|
|
128
|
+
options.include_locations,
|
|
129
|
+
map_highlight_style(options.highlight_style),
|
|
130
|
+
options.highlight_fields,
|
|
131
|
+
options.fields,
|
|
132
|
+
options.collections,
|
|
133
|
+
map_scan_consistency(options.scan_consistency),
|
|
134
|
+
options.mutation_state,
|
|
135
|
+
map_sort(options.sort, options.sort_string),
|
|
136
|
+
map_facets(options.facets),
|
|
137
|
+
map_raw(options.raw),
|
|
138
|
+
{},
|
|
139
|
+
options.client_context_id,
|
|
140
|
+
options.timeout,
|
|
141
|
+
};
|
|
142
|
+
return request;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
void
|
|
146
|
+
cluster::search_query(std::string index_name,
|
|
147
|
+
const class search_query& query,
|
|
148
|
+
const search_options& options,
|
|
149
|
+
search_handler&& handler) const
|
|
150
|
+
{
|
|
151
|
+
auto request = build_search_request(std::move(index_name), query, options.build(), {}, {});
|
|
152
|
+
|
|
153
|
+
core_->execute(std::move(request), [handler = std::move(handler)](core::operations::search_response resp) mutable {
|
|
154
|
+
handler(search_error_context{ internal_search_error_context{ resp } }, search_result{ internal_search_result{ resp } });
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
auto
|
|
159
|
+
cluster::search_query(std::string index_name, const class search_query& query, const search_options& options) const
|
|
160
|
+
-> std::future<std::pair<search_error_context, search_result>>
|
|
161
|
+
{
|
|
162
|
+
auto barrier = std::make_shared<std::promise<std::pair<search_error_context, search_result>>>();
|
|
163
|
+
search_query(std::move(index_name), query, options, [barrier](auto ctx, auto result) mutable {
|
|
164
|
+
barrier->set_value(std::make_pair(std::move(ctx), std::move(result)));
|
|
165
|
+
});
|
|
166
|
+
return barrier->get_future();
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
void
|
|
170
|
+
scope::search_query(std::string index_name, const class search_query& query, const search_options& options, search_handler&& handler) const
|
|
171
|
+
{
|
|
172
|
+
auto request = build_search_request(std::move(index_name), query, options.build(), bucket_name_, name_);
|
|
173
|
+
|
|
174
|
+
core_->execute(std::move(request), [handler = std::move(handler)](core::operations::search_response resp) mutable {
|
|
175
|
+
return handler(search_error_context{ internal_search_error_context{ resp } }, search_result{ internal_search_result{ resp } });
|
|
176
|
+
});
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
auto
|
|
180
|
+
scope::search_query(std::string index_name, const class search_query& query, const search_options& options) const
|
|
181
|
+
-> std::future<std::pair<search_error_context, search_result>>
|
|
182
|
+
{
|
|
183
|
+
auto barrier = std::make_shared<std::promise<std::pair<search_error_context, search_result>>>();
|
|
184
|
+
auto future = barrier->get_future();
|
|
185
|
+
search_query(std::move(index_name), query, options, [barrier](auto ctx, auto result) {
|
|
186
|
+
barrier->set_value({ std::move(ctx), std::move(result) });
|
|
187
|
+
});
|
|
188
|
+
return future;
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
} // namespace couchbase
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2023-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
|
+
#include "internal_search_error_context.hxx"
|
|
19
|
+
|
|
20
|
+
#include <couchbase/search_error_context.hxx>
|
|
21
|
+
|
|
22
|
+
namespace couchbase
|
|
23
|
+
{
|
|
24
|
+
search_error_context::search_error_context()
|
|
25
|
+
: internal_{ nullptr }
|
|
26
|
+
{
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
search_error_context::search_error_context(internal_search_error_context ctx)
|
|
30
|
+
: internal_{ std::make_unique<internal_search_error_context>(std::move(ctx)) }
|
|
31
|
+
{
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
search_error_context::search_error_context(search_error_context&& other) = default;
|
|
35
|
+
|
|
36
|
+
search_error_context&
|
|
37
|
+
search_error_context::operator=(search_error_context&& other) = default;
|
|
38
|
+
|
|
39
|
+
search_error_context::~search_error_context() = default;
|
|
40
|
+
|
|
41
|
+
auto
|
|
42
|
+
search_error_context::ec() const -> std::error_code
|
|
43
|
+
{
|
|
44
|
+
return internal_->ec();
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
auto
|
|
48
|
+
search_error_context::last_dispatched_to() const -> const std::optional<std::string>&
|
|
49
|
+
{
|
|
50
|
+
return internal_->last_dispatched_to();
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
auto
|
|
54
|
+
search_error_context::last_dispatched_from() const -> const std::optional<std::string>&
|
|
55
|
+
{
|
|
56
|
+
return internal_->last_dispatched_from();
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
auto
|
|
60
|
+
search_error_context::retry_attempts() const -> std::size_t
|
|
61
|
+
{
|
|
62
|
+
return internal_->retry_attempts();
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
auto
|
|
66
|
+
search_error_context::retry_reasons() const -> const std::set<retry_reason>&
|
|
67
|
+
{
|
|
68
|
+
return internal_->retry_reasons();
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
auto
|
|
72
|
+
search_error_context::retried_because_of(retry_reason reason) const -> bool
|
|
73
|
+
{
|
|
74
|
+
return internal_->retried_because_of(reason);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
auto
|
|
78
|
+
search_error_context::index_name() const -> const std::string&
|
|
79
|
+
{
|
|
80
|
+
return internal_->index_name();
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
auto
|
|
84
|
+
search_error_context::client_context_id() const -> const std::string&
|
|
85
|
+
{
|
|
86
|
+
return internal_->client_context_id();
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
auto
|
|
90
|
+
search_error_context::query() const -> const std::string&
|
|
91
|
+
{
|
|
92
|
+
return internal_->query();
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
auto
|
|
96
|
+
search_error_context::parameters() const -> const std::optional<std::string>&
|
|
97
|
+
{
|
|
98
|
+
return internal_->parameters();
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
auto
|
|
102
|
+
search_error_context::method() const -> const std::string&
|
|
103
|
+
{
|
|
104
|
+
return internal_->method();
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
auto
|
|
108
|
+
search_error_context::path() const -> const std::string&
|
|
109
|
+
{
|
|
110
|
+
return internal_->path();
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
auto
|
|
114
|
+
search_error_context::http_status() const -> std::uint32_t
|
|
115
|
+
{
|
|
116
|
+
return internal_->http_status();
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
auto
|
|
120
|
+
search_error_context::http_body() const -> const std::string&
|
|
121
|
+
{
|
|
122
|
+
return internal_->http_body();
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
auto
|
|
126
|
+
search_error_context::hostname() const -> const std::string&
|
|
127
|
+
{
|
|
128
|
+
return internal_->hostname();
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
auto
|
|
132
|
+
search_error_context::port() const -> std::uint16_t
|
|
133
|
+
{
|
|
134
|
+
return internal_->port();
|
|
135
|
+
}
|
|
136
|
+
auto
|
|
137
|
+
search_error_context::error() const -> const std::string&
|
|
138
|
+
{
|
|
139
|
+
return internal_->error();
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
auto
|
|
143
|
+
search_error_context::status() const -> const std::string&
|
|
144
|
+
{
|
|
145
|
+
return internal_->status();
|
|
146
|
+
}
|
|
147
|
+
} // namespace couchbase
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/* -*- Mode: C++; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: nil -*- */
|
|
2
|
+
/*
|
|
3
|
+
* Copyright 2023-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
|
+
#include "internal_search_meta_data.hxx"
|
|
19
|
+
|
|
20
|
+
#include <couchbase/search_meta_data.hxx>
|
|
21
|
+
|
|
22
|
+
namespace couchbase
|
|
23
|
+
{
|
|
24
|
+
search_meta_data::search_meta_data(internal_search_meta_data internal)
|
|
25
|
+
: internal_{ std::make_unique<internal_search_meta_data>(std::move(internal)) }
|
|
26
|
+
{
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
auto
|
|
30
|
+
search_meta_data::client_context_id() const -> const std::string&
|
|
31
|
+
{
|
|
32
|
+
return internal_->client_context_id();
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
auto
|
|
36
|
+
search_meta_data::errors() const -> const std::map<std::string, std::string>&
|
|
37
|
+
{
|
|
38
|
+
return internal_->errors();
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
auto
|
|
42
|
+
search_meta_data::metrics() const -> const search_metrics&
|
|
43
|
+
{
|
|
44
|
+
return internal_->metrics();
|
|
45
|
+
}
|
|
46
|
+
} // namespace couchbase
|