couchbase 4.2.3 → 4.2.5-dev.1

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 (205) hide show
  1. package/CMakeLists.txt +136 -11
  2. package/deps/couchbase-cxx-client/CMakeLists.txt +54 -4
  3. package/deps/couchbase-cxx-client/README.md +1 -0
  4. package/deps/couchbase-cxx-client/bin/create-search-index +164 -0
  5. package/deps/couchbase-cxx-client/bin/init-cluster +55 -10
  6. package/deps/couchbase-cxx-client/bin/run-unit-tests +62 -6
  7. package/deps/couchbase-cxx-client/bin/travel-sample-index-v6.json +184 -0
  8. package/deps/couchbase-cxx-client/bin/travel-sample-index.json +188 -0
  9. package/deps/couchbase-cxx-client/cmake/Documentation.cmake +0 -1
  10. package/deps/couchbase-cxx-client/cmake/OpenSSL.cmake +98 -3
  11. package/deps/couchbase-cxx-client/cmake/Testing.cmake +8 -0
  12. package/deps/couchbase-cxx-client/cmake/build_config.hxx.in +3 -0
  13. package/deps/couchbase-cxx-client/core/bucket.cxx +183 -152
  14. package/deps/couchbase-cxx-client/core/bucket.hxx +17 -4
  15. package/deps/couchbase-cxx-client/core/cluster.hxx +18 -1
  16. package/deps/couchbase-cxx-client/core/cluster_options.hxx +1 -0
  17. package/deps/couchbase-cxx-client/core/error_context/key_value.cxx +2 -1
  18. package/deps/couchbase-cxx-client/core/error_context/key_value.hxx +10 -12
  19. package/deps/couchbase-cxx-client/core/error_context/search.hxx +1 -1
  20. package/deps/couchbase-cxx-client/core/impl/analytics.cxx +1 -0
  21. package/deps/couchbase-cxx-client/core/impl/boolean_field_query.cxx +40 -0
  22. package/deps/couchbase-cxx-client/core/impl/boolean_query.cxx +62 -0
  23. package/deps/couchbase-cxx-client/core/impl/cluster.cxx +1 -0
  24. package/deps/couchbase-cxx-client/core/impl/conjunction_query.cxx +51 -0
  25. package/deps/couchbase-cxx-client/core/impl/date_range.cxx +89 -0
  26. package/deps/couchbase-cxx-client/core/impl/date_range_facet.cxx +54 -0
  27. package/deps/couchbase-cxx-client/core/impl/date_range_facet_result.cxx +64 -0
  28. package/deps/couchbase-cxx-client/core/impl/date_range_query.cxx +125 -0
  29. package/deps/couchbase-cxx-client/core/impl/disjunction_query.cxx +51 -0
  30. package/deps/couchbase-cxx-client/core/impl/encoded_search_facet.hxx +29 -0
  31. package/deps/couchbase-cxx-client/core/impl/encoded_search_query.hxx +29 -0
  32. package/deps/couchbase-cxx-client/core/impl/encoded_search_sort.hxx +29 -0
  33. package/deps/couchbase-cxx-client/core/impl/geo_bounding_box_query.cxx +46 -0
  34. package/deps/couchbase-cxx-client/core/impl/geo_distance_query.cxx +43 -0
  35. package/deps/couchbase-cxx-client/core/impl/geo_polygon_query.cxx +46 -0
  36. package/deps/couchbase-cxx-client/core/impl/internal_date_range_facet_result.cxx +80 -0
  37. package/deps/couchbase-cxx-client/core/impl/internal_date_range_facet_result.hxx +48 -0
  38. package/deps/couchbase-cxx-client/core/impl/internal_numeric_range_facet_result.cxx +80 -0
  39. package/deps/couchbase-cxx-client/core/impl/internal_numeric_range_facet_result.hxx +48 -0
  40. package/deps/couchbase-cxx-client/core/impl/internal_search_error_context.cxx +141 -0
  41. package/deps/couchbase-cxx-client/core/impl/internal_search_error_context.hxx +61 -0
  42. package/deps/couchbase-cxx-client/core/impl/internal_search_meta_data.cxx +60 -0
  43. package/deps/couchbase-cxx-client/core/impl/internal_search_meta_data.hxx +41 -0
  44. package/deps/couchbase-cxx-client/core/impl/internal_search_result.cxx +84 -0
  45. package/deps/couchbase-cxx-client/core/impl/internal_search_result.hxx +43 -0
  46. package/deps/couchbase-cxx-client/core/impl/internal_search_row.cxx +82 -0
  47. package/deps/couchbase-cxx-client/core/impl/internal_search_row.hxx +56 -0
  48. package/deps/couchbase-cxx-client/core/impl/internal_search_row_location.hxx +32 -0
  49. package/deps/couchbase-cxx-client/core/impl/internal_search_row_locations.cxx +137 -0
  50. package/deps/couchbase-cxx-client/core/impl/internal_search_row_locations.hxx +45 -0
  51. package/deps/couchbase-cxx-client/core/impl/internal_term_facet_result.cxx +80 -0
  52. package/deps/couchbase-cxx-client/core/impl/internal_term_facet_result.hxx +48 -0
  53. package/deps/couchbase-cxx-client/core/impl/key_value_error_context.cxx +98 -0
  54. package/deps/couchbase-cxx-client/core/impl/match_all_query.cxx +35 -0
  55. package/deps/couchbase-cxx-client/core/impl/match_none_query.cxx +35 -0
  56. package/deps/couchbase-cxx-client/core/impl/match_phrase_query.cxx +43 -0
  57. package/deps/couchbase-cxx-client/core/impl/match_query.cxx +59 -0
  58. package/deps/couchbase-cxx-client/core/impl/numeric_range.cxx +49 -0
  59. package/deps/couchbase-cxx-client/core/impl/numeric_range_facet.cxx +54 -0
  60. package/deps/couchbase-cxx-client/core/impl/numeric_range_facet_result.cxx +64 -0
  61. package/deps/couchbase-cxx-client/core/impl/numeric_range_query.cxx +56 -0
  62. package/deps/couchbase-cxx-client/core/impl/phrase_query.cxx +42 -0
  63. package/deps/couchbase-cxx-client/core/impl/prefix_query.cxx +40 -0
  64. package/deps/couchbase-cxx-client/core/impl/query_error_context.cxx +75 -0
  65. package/deps/couchbase-cxx-client/core/impl/query_string_query.cxx +37 -0
  66. package/deps/couchbase-cxx-client/core/impl/regexp_query.cxx +40 -0
  67. package/deps/couchbase-cxx-client/core/impl/search.cxx +191 -0
  68. package/deps/couchbase-cxx-client/core/impl/search_error_context.cxx +147 -0
  69. package/deps/couchbase-cxx-client/core/impl/search_meta_data.cxx +46 -0
  70. package/deps/couchbase-cxx-client/core/impl/search_result.cxx +66 -0
  71. package/deps/couchbase-cxx-client/core/impl/search_row.cxx +74 -0
  72. package/deps/couchbase-cxx-client/core/impl/search_row_location.cxx +64 -0
  73. package/deps/couchbase-cxx-client/core/impl/search_row_locations.cxx +66 -0
  74. package/deps/couchbase-cxx-client/core/impl/search_sort_field.cxx +104 -0
  75. package/deps/couchbase-cxx-client/core/impl/search_sort_id.cxx +43 -0
  76. package/deps/couchbase-cxx-client/core/impl/search_sort_score.cxx +43 -0
  77. package/deps/couchbase-cxx-client/core/impl/term_facet.cxx +36 -0
  78. package/deps/couchbase-cxx-client/core/impl/term_facet_result.cxx +64 -0
  79. package/deps/couchbase-cxx-client/core/impl/term_query.cxx +56 -0
  80. package/deps/couchbase-cxx-client/core/impl/term_range_query.cxx +57 -0
  81. package/deps/couchbase-cxx-client/core/impl/wildcard_query.cxx +40 -0
  82. package/deps/couchbase-cxx-client/core/io/mcbp_command.hxx +9 -2
  83. package/deps/couchbase-cxx-client/core/io/mcbp_session.cxx +54 -37
  84. package/deps/couchbase-cxx-client/core/io/mcbp_session.hxx +4 -3
  85. package/deps/couchbase-cxx-client/core/json_string.hxx +5 -0
  86. package/deps/couchbase-cxx-client/core/meta/version.cxx +18 -4
  87. package/deps/couchbase-cxx-client/core/mozilla_ca_bundle.hxx +39 -0
  88. package/deps/couchbase-cxx-client/core/operations/document_search.cxx +3 -1
  89. package/deps/couchbase-cxx-client/core/operations/document_search.hxx +1 -1
  90. package/deps/couchbase-cxx-client/core/protocol/client_request.hxx +11 -2
  91. package/deps/couchbase-cxx-client/core/protocol/client_response.hxx +1 -0
  92. package/deps/couchbase-cxx-client/core/utils/connection_string.cxx +59 -46
  93. package/deps/couchbase-cxx-client/core/utils/connection_string.hxx +1 -0
  94. package/deps/couchbase-cxx-client/couchbase/analytics_error_context.hxx +1 -1
  95. package/deps/couchbase-cxx-client/couchbase/boolean_field_query.hxx +77 -0
  96. package/deps/couchbase-cxx-client/couchbase/boolean_query.hxx +223 -0
  97. package/deps/couchbase-cxx-client/couchbase/cluster.hxx +39 -0
  98. package/deps/couchbase-cxx-client/couchbase/conjunction_query.hxx +88 -0
  99. package/deps/couchbase-cxx-client/couchbase/date_range.hxx +69 -0
  100. package/deps/couchbase-cxx-client/couchbase/date_range_facet.hxx +56 -0
  101. package/deps/couchbase-cxx-client/couchbase/date_range_facet_result.hxx +55 -0
  102. package/deps/couchbase-cxx-client/couchbase/date_range_query.hxx +265 -0
  103. package/deps/couchbase-cxx-client/couchbase/disjunction_query.hxx +109 -0
  104. package/deps/couchbase-cxx-client/couchbase/doc_id_query.hxx +111 -0
  105. package/deps/couchbase-cxx-client/couchbase/error_context.hxx +17 -8
  106. package/deps/couchbase-cxx-client/couchbase/fmt/analytics_scan_consistency.hxx +52 -0
  107. package/deps/couchbase-cxx-client/{core/topology/error_map_fmt.hxx → couchbase/fmt/key_value_error_map_attribute.hxx} +21 -21
  108. package/deps/couchbase-cxx-client/couchbase/fmt/search_scan_consistency.hxx +49 -0
  109. package/deps/couchbase-cxx-client/couchbase/geo_bounding_box_query.hxx +107 -0
  110. package/deps/couchbase-cxx-client/couchbase/geo_distance_query.hxx +109 -0
  111. package/deps/couchbase-cxx-client/couchbase/geo_point.hxx +32 -0
  112. package/deps/couchbase-cxx-client/couchbase/geo_polygon_query.hxx +85 -0
  113. package/deps/couchbase-cxx-client/couchbase/highlight_style.hxx +45 -0
  114. package/deps/couchbase-cxx-client/couchbase/key_value_error_context.hxx +7 -2
  115. package/deps/couchbase-cxx-client/couchbase/manager_error_context.hxx +1 -1
  116. package/deps/couchbase-cxx-client/couchbase/match_all_query.hxx +43 -0
  117. package/deps/couchbase-cxx-client/couchbase/match_none_query.hxx +43 -0
  118. package/deps/couchbase-cxx-client/couchbase/match_operator.hxx +45 -0
  119. package/deps/couchbase-cxx-client/couchbase/match_phrase_query.hxx +108 -0
  120. package/deps/couchbase-cxx-client/couchbase/match_query.hxx +163 -0
  121. package/deps/couchbase-cxx-client/couchbase/numeric_range.hxx +58 -0
  122. package/deps/couchbase-cxx-client/couchbase/numeric_range_facet.hxx +56 -0
  123. package/deps/couchbase-cxx-client/couchbase/numeric_range_facet_result.hxx +55 -0
  124. package/deps/couchbase-cxx-client/couchbase/numeric_range_query.hxx +143 -0
  125. package/deps/couchbase-cxx-client/couchbase/phrase_query.hxx +93 -0
  126. package/deps/couchbase-cxx-client/couchbase/prefix_query.hxx +82 -0
  127. package/deps/couchbase-cxx-client/couchbase/query_error_context.hxx +3 -1
  128. package/deps/couchbase-cxx-client/couchbase/query_string_query.hxx +72 -0
  129. package/deps/couchbase-cxx-client/couchbase/regexp_query.hxx +82 -0
  130. package/deps/couchbase-cxx-client/couchbase/scope.hxx +39 -0
  131. package/deps/couchbase-cxx-client/couchbase/search_date_range.hxx +68 -0
  132. package/deps/couchbase-cxx-client/couchbase/search_error_context.hxx +138 -0
  133. package/deps/couchbase-cxx-client/couchbase/search_facet.hxx +60 -0
  134. package/deps/couchbase-cxx-client/couchbase/search_facet_result.hxx +50 -0
  135. package/deps/couchbase-cxx-client/couchbase/search_meta_data.hxx +85 -0
  136. package/deps/couchbase-cxx-client/couchbase/search_metrics.hxx +127 -0
  137. package/deps/couchbase-cxx-client/couchbase/search_numeric_range.hxx +69 -0
  138. package/deps/couchbase-cxx-client/couchbase/search_options.hxx +509 -0
  139. package/deps/couchbase-cxx-client/couchbase/search_query.hxx +69 -0
  140. package/deps/couchbase-cxx-client/couchbase/search_result.hxx +77 -0
  141. package/deps/couchbase-cxx-client/couchbase/search_row.hxx +104 -0
  142. package/deps/couchbase-cxx-client/couchbase/search_row_location.hxx +55 -0
  143. package/deps/couchbase-cxx-client/couchbase/search_row_locations.hxx +86 -0
  144. package/deps/couchbase-cxx-client/couchbase/search_scan_consistency.hxx +34 -0
  145. package/deps/couchbase-cxx-client/couchbase/search_sort.hxx +58 -0
  146. package/deps/couchbase-cxx-client/couchbase/search_sort_field.hxx +117 -0
  147. package/deps/couchbase-cxx-client/couchbase/search_sort_field_missing.hxx +26 -0
  148. package/deps/couchbase-cxx-client/couchbase/search_sort_field_mode.hxx +27 -0
  149. package/deps/couchbase-cxx-client/couchbase/search_sort_field_type.hxx +28 -0
  150. package/deps/couchbase-cxx-client/couchbase/search_sort_id.hxx +60 -0
  151. package/deps/couchbase-cxx-client/couchbase/search_sort_score.hxx +60 -0
  152. package/deps/couchbase-cxx-client/couchbase/search_term_range.hxx +51 -0
  153. package/deps/couchbase-cxx-client/couchbase/security_options.hxx +3 -0
  154. package/deps/couchbase-cxx-client/couchbase/subdocument_error_context.hxx +4 -2
  155. package/deps/couchbase-cxx-client/couchbase/term_facet.hxx +48 -0
  156. package/deps/couchbase-cxx-client/couchbase/term_facet_result.hxx +55 -0
  157. package/deps/couchbase-cxx-client/couchbase/term_query.hxx +151 -0
  158. package/deps/couchbase-cxx-client/couchbase/term_range_query.hxx +142 -0
  159. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_options.hxx +1 -1
  160. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_query_options.hxx +2 -1
  161. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_result.hxx +1 -1
  162. package/deps/couchbase-cxx-client/couchbase/transactions.hxx +3 -3
  163. package/deps/couchbase-cxx-client/couchbase/wildcard_query.hxx +83 -0
  164. package/deps/couchbase-cxx-client/docs/Doxyfile.in +1 -1
  165. package/deps/couchbase-cxx-client/docs/cbc-analytics.md +2 -2
  166. package/deps/couchbase-cxx-client/docs/cbc-get.md +3 -2
  167. package/deps/couchbase-cxx-client/docs/cbc-pillowfight.md +7 -2
  168. package/deps/couchbase-cxx-client/docs/cbc-query.md +2 -2
  169. package/deps/couchbase-cxx-client/docs/cbc.md +3 -3
  170. package/deps/couchbase-cxx-client/docs/cli.hxx +5 -5
  171. package/deps/couchbase-cxx-client/docs/mainpage.hxx +42 -5
  172. package/deps/couchbase-cxx-client/test/CMakeLists.txt +1 -0
  173. package/deps/couchbase-cxx-client/test/test_integration_analytics.cxx +28 -6
  174. package/deps/couchbase-cxx-client/test/test_integration_collections.cxx +7 -3
  175. package/deps/couchbase-cxx-client/test/test_integration_connect.cxx +7 -3
  176. package/deps/couchbase-cxx-client/test/test_integration_crud.cxx +13 -3
  177. package/deps/couchbase-cxx-client/test/test_integration_diagnostics.cxx +8 -2
  178. package/deps/couchbase-cxx-client/test/test_integration_durability.cxx +12 -7
  179. package/deps/couchbase-cxx-client/test/test_integration_examples.cxx +283 -11
  180. package/deps/couchbase-cxx-client/test/test_integration_management.cxx +140 -88
  181. package/deps/couchbase-cxx-client/test/test_integration_query.cxx +67 -9
  182. package/deps/couchbase-cxx-client/test/test_integration_range_scan.cxx +12 -12
  183. package/deps/couchbase-cxx-client/test/test_integration_read_replica.cxx +48 -11
  184. package/deps/couchbase-cxx-client/test/test_integration_search.cxx +19 -1
  185. package/deps/couchbase-cxx-client/test/test_integration_subdoc.cxx +60 -9
  186. package/deps/couchbase-cxx-client/test/test_integration_tracer.cxx +3 -0
  187. package/deps/couchbase-cxx-client/test/test_integration_transcoders.cxx +4 -0
  188. package/deps/couchbase-cxx-client/test/test_transaction_examples.cxx +100 -85
  189. package/deps/couchbase-cxx-client/test/test_unit_connection_string.cxx +29 -0
  190. package/deps/couchbase-cxx-client/test/test_unit_search.cxx +427 -0
  191. package/deps/couchbase-cxx-client/test/utils/integration_test_guard.cxx +2 -1
  192. package/deps/couchbase-cxx-client/test/utils/logger.cxx +3 -1
  193. package/deps/couchbase-cxx-client/test/utils/server_version.hxx +31 -15
  194. package/deps/couchbase-cxx-client/test/utils/test_context.cxx +8 -0
  195. package/deps/couchbase-cxx-client/tools/get.cxx +9 -8
  196. package/deps/couchbase-cxx-client/tools/pillowfight.cxx +175 -75
  197. package/deps/couchbase-cxx-client/tools/version.cxx +4 -2
  198. package/dist/binding.d.ts +1 -1
  199. package/dist/binding.js +3 -2
  200. package/package.json +96 -1
  201. package/scripts/createPlatformPackages.js +108 -0
  202. package/scripts/install.js +45 -0
  203. package/scripts/prebuilds.js +249 -0
  204. package/scripts/prune.js +124 -0
  205. package/src/jstocbpp_autogen.hpp +3 -2
@@ -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
@@ -0,0 +1,66 @@
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_result.hxx"
19
+
20
+ #include "internal_date_range_facet_result.hxx"
21
+ #include "internal_numeric_range_facet_result.hxx"
22
+ #include "internal_search_meta_data.hxx"
23
+ #include "internal_search_row.hxx"
24
+ #include "internal_search_row_location.hxx"
25
+ #include "internal_search_row_locations.hxx"
26
+ #include "internal_term_facet_result.hxx"
27
+
28
+ #include <couchbase/search_result.hxx>
29
+
30
+ namespace couchbase
31
+ {
32
+ search_result::search_result()
33
+ : internal_{ nullptr }
34
+ {
35
+ }
36
+
37
+ search_result::search_result(internal_search_result internal)
38
+ : internal_{ std::make_unique<internal_search_result>(std::move(internal)) }
39
+ {
40
+ }
41
+
42
+ search_result::~search_result() = default;
43
+
44
+ search_result&
45
+ search_result::operator=(search_result&&) noexcept = default;
46
+
47
+ search_result::search_result(search_result&&) noexcept = default;
48
+
49
+ auto
50
+ search_result::meta_data() const -> const search_meta_data&
51
+ {
52
+ return internal_->meta_data();
53
+ }
54
+
55
+ auto
56
+ search_result::rows() const -> const std::vector<search_row>&
57
+ {
58
+ return internal_->rows();
59
+ }
60
+
61
+ auto
62
+ search_result::facets() const -> const std::map<std::string, std::shared_ptr<search_facet_result>>&
63
+ {
64
+ return internal_->facets();
65
+ }
66
+ } // namespace couchbase
@@ -0,0 +1,74 @@
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_row.hxx"
19
+
20
+ #include "internal_search_row_location.hxx"
21
+ #include "internal_search_row_locations.hxx"
22
+
23
+ #include <couchbase/search_row.hxx>
24
+
25
+ namespace couchbase
26
+ {
27
+ search_row::search_row(internal_search_row internal)
28
+ : internal_{ std::make_unique<internal_search_row>(std::move(internal)) }
29
+
30
+ {
31
+ }
32
+
33
+ auto
34
+ search_row::index() const -> const std::string&
35
+ {
36
+ return internal_->index();
37
+ }
38
+
39
+ auto
40
+ search_row::id() const -> const std::string&
41
+ {
42
+ return internal_->id();
43
+ }
44
+
45
+ auto
46
+ search_row::score() const -> double
47
+ {
48
+ return internal_->score();
49
+ }
50
+
51
+ auto
52
+ search_row::fields() const -> const codec::binary&
53
+ {
54
+ return internal_->fields();
55
+ }
56
+
57
+ auto
58
+ search_row::explanation() const -> const codec::binary&
59
+ {
60
+ return internal_->explanation();
61
+ }
62
+
63
+ auto
64
+ search_row::locations() const -> const std::optional<search_row_locations>&
65
+ {
66
+ return internal_->locations();
67
+ }
68
+
69
+ auto
70
+ search_row::fragments() const -> const std::map<std::string, std::vector<std::string>>&
71
+ {
72
+ return internal_->fragments();
73
+ }
74
+ } // namespace couchbase
@@ -0,0 +1,64 @@
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_row_location.hxx"
19
+
20
+ #include <couchbase/search_row_location.hxx>
21
+
22
+ namespace couchbase
23
+ {
24
+ search_row_location::search_row_location(internal_search_row_location internal)
25
+ : internal_{ std::make_unique<internal_search_row_location>(std::move(internal)) }
26
+ {
27
+ }
28
+
29
+ auto
30
+ search_row_location::field() const -> const std::string&
31
+ {
32
+ return internal_->location.field;
33
+ }
34
+
35
+ auto
36
+ search_row_location::term() const -> const std::string&
37
+ {
38
+ return internal_->location.term;
39
+ }
40
+
41
+ auto
42
+ search_row_location::position() const -> const std::uint64_t&
43
+ {
44
+ return internal_->location.position;
45
+ }
46
+
47
+ auto
48
+ search_row_location::start_offset() const -> const std::uint64_t&
49
+ {
50
+ return internal_->location.start_offset;
51
+ }
52
+
53
+ auto
54
+ search_row_location::end_offset() const -> const std::uint64_t&
55
+ {
56
+ return internal_->location.end_offset;
57
+ }
58
+
59
+ auto
60
+ search_row_location::array_positions() const -> const std::optional<std::vector<std::uint64_t>>&
61
+ {
62
+ return internal_->location.array_positions;
63
+ }
64
+ } // namespace couchbase
@@ -0,0 +1,66 @@
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_row_locations.hxx"
19
+
20
+ #include "internal_search_row_location.hxx"
21
+
22
+ #include <couchbase/search_row_locations.hxx>
23
+
24
+ namespace couchbase
25
+ {
26
+ search_row_locations::search_row_locations(internal_search_row_locations internal)
27
+ : internal_{ std::make_unique<internal_search_row_locations>(std::move(internal)) }
28
+ {
29
+ }
30
+
31
+ auto
32
+ search_row_locations::get(const std::string& field) const -> std::vector<search_row_location>
33
+ {
34
+ return internal_->get(field);
35
+ }
36
+
37
+ auto
38
+ search_row_locations::get(const std::string& field, const std::string& term) const -> std::vector<search_row_location>
39
+ {
40
+ return internal_->get(field, term);
41
+ }
42
+
43
+ auto
44
+ search_row_locations::get_all() const -> std::vector<search_row_location>
45
+ {
46
+ return internal_->get_all();
47
+ }
48
+
49
+ auto
50
+ search_row_locations::fields() const -> std::vector<std::string>
51
+ {
52
+ return internal_->fields();
53
+ }
54
+
55
+ auto
56
+ search_row_locations::terms() const -> std::set<std::string>
57
+ {
58
+ return internal_->terms();
59
+ }
60
+
61
+ auto
62
+ search_row_locations::terms_for(const std::string& field) const -> std::vector<std::string>
63
+ {
64
+ return internal_->terms_for(field);
65
+ }
66
+ } // namespace couchbase