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,104 @@
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/codec/binary_noop_serializer.hxx>
21
+ #include <couchbase/codec/encoded_value.hxx>
22
+ #include <couchbase/search_row_locations.hxx>
23
+
24
+ #include <memory>
25
+
26
+ namespace couchbase
27
+ {
28
+ #ifndef COUCHBASE_CXX_CLIENT_DOXYGEN
29
+ class internal_search_row;
30
+ #endif
31
+
32
+ /**
33
+ * Search Metrics contains the search result metrics containing counts and timings
34
+ *
35
+ * @since 1.0.0
36
+ * @committed
37
+ */
38
+ class search_row
39
+ {
40
+ public:
41
+ /**
42
+ * @since 1.0.0
43
+ * @volatile
44
+ */
45
+ explicit search_row(internal_search_row internal);
46
+
47
+ /**
48
+ * @since 1.0.0
49
+ * @committed
50
+ */
51
+ [[nodiscard]] auto index() const -> const std::string&;
52
+
53
+ /**
54
+ * @since 1.0.0
55
+ * @committed
56
+ */
57
+ [[nodiscard]] auto id() const -> const std::string&;
58
+
59
+ /**
60
+ * @since 1.0.0
61
+ * @committed
62
+ */
63
+ [[nodiscard]] auto score() const -> double;
64
+
65
+ /**
66
+ * @since 1.0.0
67
+ * @committed
68
+ */
69
+ [[nodiscard]] auto fields() const -> const codec::binary&;
70
+
71
+ template<typename Serializer,
72
+ typename Document = typename Serializer::document_type,
73
+ std::enable_if_t<codec::is_serializer_v<Serializer>, bool> = true>
74
+ [[nodiscard]] auto fields_as() const -> Document
75
+ {
76
+ if (fields().empty()) {
77
+ return Document{};
78
+ }
79
+ return Serializer::template deserialize<Document>(fields());
80
+ }
81
+
82
+ /**
83
+ * @since 1.0.0
84
+ * @committed
85
+ */
86
+ [[nodiscard]] auto explanation() const -> const codec::binary&;
87
+
88
+ /**
89
+ * @since 1.0.0
90
+ * @committed
91
+ */
92
+ [[nodiscard]] auto locations() const -> const std::optional<search_row_locations>&;
93
+
94
+ /**
95
+ * @since 1.0.0
96
+ * @committed
97
+ */
98
+ [[nodiscard]] auto fragments() const -> const std::map<std::string, std::vector<std::string>>&;
99
+
100
+ private:
101
+ std::unique_ptr<internal_search_row> internal_;
102
+ };
103
+
104
+ } // namespace couchbase
@@ -0,0 +1,55 @@
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 <cinttypes>
21
+ #include <optional>
22
+ #include <string>
23
+ #include <vector>
24
+
25
+ namespace couchbase
26
+ {
27
+ #ifndef COUCHBASE_CXX_CLIENT_DOXYGEN
28
+ class internal_search_row_location;
29
+ #endif
30
+
31
+ /**
32
+ * @since 1.0.0
33
+ * @committed
34
+ */
35
+ class search_row_location
36
+ {
37
+ public:
38
+ /**
39
+ * @since 1.0.0
40
+ * @internal
41
+ */
42
+ explicit search_row_location(internal_search_row_location location);
43
+
44
+ [[nodiscard]] auto field() const -> const std::string&;
45
+ [[nodiscard]] auto term() const -> const std::string&;
46
+ [[nodiscard]] auto position() const -> const std::uint64_t&;
47
+ [[nodiscard]] auto start_offset() const -> const std::uint64_t&;
48
+ [[nodiscard]] auto end_offset() const -> const std::uint64_t&;
49
+ [[nodiscard]] auto array_positions() const -> const std::optional<std::vector<std::uint64_t>>&;
50
+
51
+ private:
52
+ std::unique_ptr<internal_search_row_location> internal_;
53
+ };
54
+
55
+ } // namespace couchbase
@@ -0,0 +1,86 @@
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/search_row_location.hxx>
21
+
22
+ #include <map>
23
+ #include <set>
24
+ #include <string>
25
+ #include <vector>
26
+
27
+ namespace couchbase
28
+ {
29
+ #ifndef COUCHBASE_CXX_CLIENT_DOXYGEN
30
+ class internal_search_row_locations;
31
+ #endif
32
+
33
+ /**
34
+ * @since 1.0.0
35
+ * @committed
36
+ */
37
+ class search_row_locations
38
+ {
39
+ public:
40
+ /**
41
+ * @since 1.0.0
42
+ * @internal
43
+ */
44
+ explicit search_row_locations(internal_search_row_locations internal);
45
+
46
+ /**
47
+ * @since 1.0.0
48
+ * @committed
49
+ */
50
+ [[nodiscard]] auto get(const std::string& field) const -> std::vector<search_row_location>;
51
+
52
+ /**
53
+ * @since 1.0.0
54
+ * @committed
55
+ */
56
+ [[nodiscard]] auto get(const std::string& field, const std::string& term) const -> std::vector<search_row_location>;
57
+
58
+ /**
59
+ * @since 1.0.0
60
+ * @committed
61
+ */
62
+ [[nodiscard]] auto get_all() const -> std::vector<search_row_location>;
63
+
64
+ /**
65
+ * @since 1.0.0
66
+ * @committed
67
+ */
68
+ [[nodiscard]] auto fields() const -> std::vector<std::string>;
69
+
70
+ /**
71
+ * @since 1.0.0
72
+ * @committed
73
+ */
74
+ [[nodiscard]] auto terms() const -> std::set<std::string>;
75
+
76
+ /**
77
+ * @since 1.0.0
78
+ * @committed
79
+ */
80
+ [[nodiscard]] auto terms_for(const std::string& field) const -> std::vector<std::string>;
81
+
82
+ private:
83
+ std::unique_ptr<internal_search_row_locations> internal_;
84
+ };
85
+
86
+ } // namespace couchbase
@@ -0,0 +1,34 @@
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
+ namespace couchbase
21
+ {
22
+ enum class search_scan_consistency {
23
+ /**
24
+ * This is the default, the indexer does not wait for certain index updates until it returns the current hits.
25
+ *
26
+ * This is also the fastest mode, because we avoid the cost of obtaining the vector,
27
+ * and we also avoid any wait for the index to catch up to the vector.
28
+ *
29
+ * @since 1.0.0
30
+ * @committed
31
+ */
32
+ not_bounded = 0,
33
+ };
34
+ } // namespace couchbase
@@ -0,0 +1,58 @@
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
+ #pragma once
19
+
20
+ #include <optional>
21
+
22
+ namespace couchbase
23
+ {
24
+ #ifndef COUCHBASE_CXX_CLIENT_DOXYGEN
25
+ struct encoded_search_sort;
26
+ #endif
27
+
28
+ /**
29
+ * Base class for full text sort objects of search queries.
30
+ *
31
+ * @see https://docs.couchbase.com/server/current/fts/fts-search-request.html#sorting-with-objects
32
+ *
33
+ * @since 1.0.0
34
+ */
35
+ class search_sort
36
+ {
37
+ public:
38
+ virtual ~search_sort() = default;
39
+
40
+ /**
41
+ * @return encoded representation of the search facet.
42
+ *
43
+ * @since 1.0.0
44
+ * @internal
45
+ */
46
+ [[nodiscard]] virtual auto encode() const -> encoded_search_sort = 0;
47
+
48
+ protected:
49
+ search_sort() = default;
50
+
51
+ explicit search_sort(bool descending)
52
+ : descending_{ descending }
53
+ {
54
+ }
55
+
56
+ std::optional<bool> descending_{};
57
+ };
58
+ } // namespace couchbase
@@ -0,0 +1,117 @@
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
+ #pragma once
19
+
20
+ #include <couchbase/search_sort.hxx>
21
+ #include <couchbase/search_sort_field_missing.hxx>
22
+ #include <couchbase/search_sort_field_mode.hxx>
23
+ #include <couchbase/search_sort_field_type.hxx>
24
+
25
+ #include <string>
26
+
27
+ namespace couchbase
28
+ {
29
+ /**
30
+ * Sorts by a field in the hits.
31
+ *
32
+ * @see https://docs.couchbase.com/server/current/fts/fts-search-request.html#sorting-with-objects
33
+ *
34
+ * @since 1.0.0
35
+ */
36
+ class search_sort_field : public search_sort
37
+ {
38
+ public:
39
+ explicit search_sort_field(std::string field)
40
+ : field_{ std::move(field) }
41
+ {
42
+ }
43
+
44
+ search_sort_field(std::string field, bool descending)
45
+ : search_sort{ descending }
46
+ , field_{ std::move(field) }
47
+ {
48
+ }
49
+
50
+ /**
51
+ * Set the sorting direction.
52
+ *
53
+ * @param desc `true` for descending order, `false` for ascending
54
+ * @return pointer to this
55
+ *
56
+ * @since 1.0.0
57
+ * @committed
58
+ */
59
+ auto descending(bool desc) -> search_sort_field&;
60
+
61
+ /**
62
+ * Specifies the type of the search-order field value.
63
+ *
64
+ * For example, @ref search_sort_field_type::string for text fields, @ref search_sort_field_type::date for DateTime fields,
65
+ * or @ref search_sort_field_type::number for numeric/geo fields.
66
+ *
67
+ * @param desc field type
68
+ * @return pointer to this
69
+ *
70
+ * @since 1.0.0
71
+ * @committed
72
+ */
73
+ auto type(search_sort_field_type desc) -> search_sort_field&;
74
+
75
+ /**
76
+ * Specifies the search-order for index-fields that contain multiple values (in consequence of arrays or multi-token analyzer-output).
77
+ *
78
+ * The default order is undefined but deterministic, allowing the paging of results, with reliable ordering. To sort using the minimum
79
+ * or maximum value, the value of mode should be set to either @ref search_sort_field_mode::min or @ref search_sort_field_mode::max.
80
+ *
81
+ * @param value strategy for multi-value fields.
82
+ * @return pointer to this
83
+ *
84
+ * @since 1.0.0
85
+ * @committed
86
+ */
87
+ auto mode(search_sort_field_mode value) -> search_sort_field&;
88
+
89
+ /**
90
+ * Specifies the sort-procedure for documents with a missing value in a field specified for sorting.
91
+ *
92
+ * The value of missing can be @ref search_sort_field_missing::first, in which case results with missing values appear before other
93
+ * results; or @ref search_sort_field_missing::last (the server default), in which case they appear after.
94
+ *
95
+ * @param value strategy for missing values
96
+ * @return pointer to this
97
+ *
98
+ * @since 1.0.0
99
+ * @committed
100
+ */
101
+ auto missing(search_sort_field_missing value) -> search_sort_field&;
102
+
103
+ /**
104
+ * @return encoded representation of the search facet.
105
+ *
106
+ * @since 1.0.0
107
+ * @internal
108
+ */
109
+ [[nodiscard]] auto encode() const -> encoded_search_sort override;
110
+
111
+ private:
112
+ std::string field_;
113
+ std::optional<search_sort_field_type> type_{};
114
+ std::optional<search_sort_field_mode> mode_{};
115
+ std::optional<search_sort_field_missing> missing_{};
116
+ };
117
+ } // namespace couchbase
@@ -0,0 +1,26 @@
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
+ #pragma once
19
+
20
+ namespace couchbase
21
+ {
22
+ enum class search_sort_field_missing {
23
+ last,
24
+ first,
25
+ };
26
+ } // namespace couchbase
@@ -0,0 +1,27 @@
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
+ #pragma once
19
+
20
+ namespace couchbase
21
+ {
22
+ enum class search_sort_field_mode {
23
+ server_default,
24
+ min,
25
+ max,
26
+ };
27
+ } // namespace couchbase
@@ -0,0 +1,28 @@
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
+ #pragma once
19
+
20
+ namespace couchbase
21
+ {
22
+ enum class search_sort_field_type {
23
+ automatic,
24
+ string,
25
+ number,
26
+ date,
27
+ };
28
+ } // namespace couchbase
@@ -0,0 +1,60 @@
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
+ #pragma once
19
+
20
+ #include <couchbase/search_sort.hxx>
21
+
22
+ namespace couchbase
23
+ {
24
+ /**
25
+ * Sorts by the document ID.
26
+ *
27
+ * @see https://docs.couchbase.com/server/current/fts/fts-search-request.html#sorting-with-objects
28
+ *
29
+ * @since 1.0.0
30
+ */
31
+ class search_sort_id : public search_sort
32
+ {
33
+ public:
34
+ search_sort_id() = default;
35
+
36
+ explicit search_sort_id(bool descending)
37
+ : search_sort{ descending }
38
+ {
39
+ }
40
+
41
+ /**
42
+ * Set the sorting direction.
43
+ *
44
+ * @param desc `true` for descending order, `false` for ascending
45
+ * @return pointer to this
46
+ *
47
+ * @since 1.0.0
48
+ * @committed
49
+ */
50
+ auto descending(bool desc) -> search_sort_id&;
51
+
52
+ /**
53
+ * @return encoded representation of the search facet.
54
+ *
55
+ * @since 1.0.0
56
+ * @internal
57
+ */
58
+ [[nodiscard]] auto encode() const -> encoded_search_sort override;
59
+ };
60
+ } // namespace couchbase
@@ -0,0 +1,60 @@
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
+ #pragma once
19
+
20
+ #include <couchbase/search_sort.hxx>
21
+
22
+ namespace couchbase
23
+ {
24
+ /**
25
+ * Sorts by the hit score.
26
+ *
27
+ * @see https://docs.couchbase.com/server/current/fts/fts-search-request.html#sorting-with-objects
28
+ *
29
+ * @since 1.0.0
30
+ */
31
+ class search_sort_score : public search_sort
32
+ {
33
+ public:
34
+ search_sort_score() = default;
35
+
36
+ explicit search_sort_score(bool descending)
37
+ : search_sort{ descending }
38
+ {
39
+ }
40
+
41
+ /**
42
+ * Set the sorting direction.
43
+ *
44
+ * @param desc `true` for descending order, `false` for ascending
45
+ * @return pointer to this
46
+ *
47
+ * @since 1.0.0
48
+ * @committed
49
+ */
50
+ auto descending(bool desc) -> search_sort_score&;
51
+
52
+ /**
53
+ * @return encoded representation of the search facet.
54
+ *
55
+ * @since 1.0.0
56
+ * @internal
57
+ */
58
+ [[nodiscard]] auto encode() const -> encoded_search_sort override;
59
+ };
60
+ } // namespace couchbase