couchbase 4.2.1 → 4.2.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (162) hide show
  1. package/CMakeLists.txt +1 -0
  2. package/deps/couchbase-cxx-client/.gitmodules +3 -0
  3. package/deps/couchbase-cxx-client/.idea/misc.xml +1 -0
  4. package/deps/couchbase-cxx-client/.idea/vcs.xml +1 -0
  5. package/deps/couchbase-cxx-client/CMakeLists.txt +11 -1
  6. package/deps/couchbase-cxx-client/README.md +3 -3
  7. package/deps/couchbase-cxx-client/cmake/CompilerWarnings.cmake +4 -1
  8. package/deps/couchbase-cxx-client/cmake/VersionInfo.cmake +13 -1
  9. package/deps/couchbase-cxx-client/cmake/build_version.hxx.in +1 -0
  10. package/deps/couchbase-cxx-client/core/cluster.hxx +15 -5
  11. package/deps/couchbase-cxx-client/core/impl/build_deferred_query_indexes.cxx +17 -6
  12. package/deps/couchbase-cxx-client/core/impl/cluster.cxx +1 -1
  13. package/deps/couchbase-cxx-client/core/impl/collection_query_index_manager.cxx +93 -0
  14. package/deps/couchbase-cxx-client/core/impl/configuration_profiles_registry.cxx +11 -0
  15. package/deps/couchbase-cxx-client/core/impl/create_query_index.cxx +119 -0
  16. package/deps/couchbase-cxx-client/core/impl/drop_query_index.cxx +108 -0
  17. package/deps/couchbase-cxx-client/core/impl/get.cxx +1 -1
  18. package/deps/couchbase-cxx-client/core/impl/get_all_query_indexes.cxx +76 -0
  19. package/deps/couchbase-cxx-client/core/impl/query.cxx +5 -7
  20. package/deps/couchbase-cxx-client/core/impl/watch_query_indexes.cxx +168 -0
  21. package/deps/couchbase-cxx-client/core/io/mcbp_session.cxx +15 -1
  22. package/deps/couchbase-cxx-client/core/logger/configuration.hxx +3 -0
  23. package/deps/couchbase-cxx-client/core/logger/level.hxx +21 -0
  24. package/deps/couchbase-cxx-client/core/logger/logger.hxx +4 -6
  25. package/deps/couchbase-cxx-client/core/meta/CMakeLists.txt +4 -2
  26. package/deps/couchbase-cxx-client/core/meta/features.hxx +31 -0
  27. package/deps/couchbase-cxx-client/core/meta/version.cxx +67 -5
  28. package/deps/couchbase-cxx-client/core/meta/version.hxx +12 -1
  29. package/deps/couchbase-cxx-client/core/metrics/CMakeLists.txt +4 -1
  30. package/deps/couchbase-cxx-client/core/metrics/logging_meter.cxx +46 -5
  31. package/deps/couchbase-cxx-client/core/metrics/logging_meter.hxx +10 -26
  32. package/deps/couchbase-cxx-client/core/operations/document_get_projected.cxx +3 -2
  33. package/deps/couchbase-cxx-client/core/operations/document_query.cxx +10 -12
  34. package/deps/couchbase-cxx-client/core/operations/document_query.hxx +1 -3
  35. package/deps/couchbase-cxx-client/core/operations/management/query_index_build.cxx +8 -14
  36. package/deps/couchbase-cxx-client/core/operations/management/query_index_build.hxx +2 -1
  37. package/deps/couchbase-cxx-client/core/operations/management/query_index_build_deferred.hxx +15 -8
  38. package/deps/couchbase-cxx-client/core/operations/management/query_index_create.cxx +7 -14
  39. package/deps/couchbase-cxx-client/core/operations/management/query_index_create.hxx +2 -0
  40. package/deps/couchbase-cxx-client/core/operations/management/query_index_drop.cxx +11 -16
  41. package/deps/couchbase-cxx-client/core/operations/management/query_index_drop.hxx +2 -0
  42. package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all.cxx +8 -12
  43. package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all.hxx +4 -3
  44. package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all_deferred.cxx +21 -12
  45. package/deps/couchbase-cxx-client/core/operations/management/query_index_get_all_deferred.hxx +3 -2
  46. package/deps/couchbase-cxx-client/core/origin.hxx +1 -1
  47. package/deps/couchbase-cxx-client/core/platform/uuid.cc +1 -2
  48. package/deps/couchbase-cxx-client/core/protocol/cmd_hello.hxx +5 -1
  49. package/deps/couchbase-cxx-client/core/query_context.hxx +79 -0
  50. package/deps/couchbase-cxx-client/core/tracing/CMakeLists.txt +3 -1
  51. package/deps/couchbase-cxx-client/core/tracing/threshold_logging_tracer.cxx +19 -4
  52. package/deps/couchbase-cxx-client/core/tracing/threshold_logging_tracer.hxx +2 -2
  53. package/deps/couchbase-cxx-client/core/transactions/async_attempt_context.hxx +10 -4
  54. package/deps/couchbase-cxx-client/core/transactions/atr_cleanup_entry.cxx +52 -63
  55. package/deps/couchbase-cxx-client/core/transactions/attempt_context.hxx +8 -3
  56. package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.cxx +163 -126
  57. package/deps/couchbase-cxx-client/core/transactions/attempt_context_impl.hxx +24 -37
  58. package/deps/couchbase-cxx-client/core/transactions/forward_compat.hxx +4 -4
  59. package/deps/couchbase-cxx-client/core/transactions/internal/atr_cleanup_entry.hxx +51 -13
  60. package/deps/couchbase-cxx-client/core/transactions/internal/client_record.hxx +26 -1
  61. package/deps/couchbase-cxx-client/core/transactions/internal/doc_record.hxx +21 -0
  62. package/deps/couchbase-cxx-client/core/transactions/internal/logging.hxx +40 -18
  63. package/deps/couchbase-cxx-client/core/transactions/internal/transaction_context.hxx +5 -0
  64. package/deps/couchbase-cxx-client/core/transactions/result.hxx +26 -0
  65. package/deps/couchbase-cxx-client/core/transactions/staged_mutation.cxx +48 -47
  66. package/deps/couchbase-cxx-client/core/transactions/staged_mutation.hxx +6 -6
  67. package/deps/couchbase-cxx-client/core/transactions/transaction_context.cxx +33 -19
  68. package/deps/couchbase-cxx-client/core/transactions/transaction_get_result.hxx +18 -2
  69. package/deps/couchbase-cxx-client/core/transactions/transaction_links.hxx +25 -2
  70. package/deps/couchbase-cxx-client/core/transactions/transactions.cxx +4 -4
  71. package/deps/couchbase-cxx-client/core/transactions/transactions_cleanup.cxx +49 -56
  72. package/deps/couchbase-cxx-client/core/transactions/waitable_op_list.hxx +7 -7
  73. package/deps/couchbase-cxx-client/core/transactions.hxx +0 -12
  74. package/deps/couchbase-cxx-client/core/utils/binary.hxx +1 -1
  75. package/deps/couchbase-cxx-client/core/utils/keyspace.hxx +55 -0
  76. package/deps/couchbase-cxx-client/couchbase/build_query_index_options.hxx +12 -45
  77. package/deps/couchbase-cxx-client/couchbase/cluster.hxx +1 -1
  78. package/deps/couchbase-cxx-client/couchbase/cluster_options.hxx +6 -7
  79. package/deps/couchbase-cxx-client/couchbase/collection.hxx +8 -0
  80. package/deps/couchbase-cxx-client/couchbase/collection_query_index_manager.hxx +218 -0
  81. package/deps/couchbase-cxx-client/couchbase/configuration_profiles_registry.hxx +3 -0
  82. package/deps/couchbase-cxx-client/couchbase/create_primary_query_index_options.hxx +166 -0
  83. package/deps/couchbase-cxx-client/couchbase/create_query_index_options.hxx +172 -0
  84. package/deps/couchbase-cxx-client/couchbase/drop_primary_query_index_options.hxx +129 -0
  85. package/deps/couchbase-cxx-client/couchbase/drop_query_index_options.hxx +116 -0
  86. package/deps/couchbase-cxx-client/couchbase/fmt/cas.hxx +1 -1
  87. package/deps/couchbase-cxx-client/couchbase/fmt/query_scan_consistency.hxx +46 -0
  88. package/deps/couchbase-cxx-client/couchbase/fmt/query_status.hxx +70 -0
  89. package/deps/couchbase-cxx-client/couchbase/fmt/tls_verify_mode.hxx +46 -0
  90. package/deps/couchbase-cxx-client/couchbase/get_all_query_indexes_options.hxx +100 -0
  91. package/deps/couchbase-cxx-client/{core → couchbase}/management/query_index.hxx +2 -2
  92. package/deps/couchbase-cxx-client/couchbase/metrics/meter.hxx +16 -0
  93. package/deps/couchbase-cxx-client/couchbase/query_index_manager.hxx +178 -6
  94. package/deps/couchbase-cxx-client/couchbase/query_options.hxx +1 -18
  95. package/deps/couchbase-cxx-client/couchbase/scope.hxx +5 -2
  96. package/deps/couchbase-cxx-client/couchbase/tracing/request_tracer.hxx +16 -0
  97. package/deps/couchbase-cxx-client/couchbase/transactions/async_attempt_context.hxx +11 -4
  98. package/deps/couchbase-cxx-client/couchbase/transactions/attempt_context.hxx +5 -3
  99. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_keyspace.hxx +16 -0
  100. package/deps/couchbase-cxx-client/couchbase/transactions/transaction_query_options.hxx +0 -6
  101. package/deps/couchbase-cxx-client/couchbase/watch_query_indexes_options.hxx +115 -0
  102. package/deps/couchbase-cxx-client/examples/minimal.cxx +3 -1
  103. package/deps/couchbase-cxx-client/test/test_integration_crud.cxx +72 -0
  104. package/deps/couchbase-cxx-client/test/test_integration_management.cxx +727 -310
  105. package/deps/couchbase-cxx-client/test/test_integration_query.cxx +4 -8
  106. package/deps/couchbase-cxx-client/test/test_integration_transcoders.cxx +14 -0
  107. package/deps/couchbase-cxx-client/test/test_transaction_transaction_public_blocking_api.cxx +34 -19
  108. package/deps/couchbase-cxx-client/test/test_unit_transaction_logging.cxx +66 -22
  109. package/deps/couchbase-cxx-client/test/test_unit_utils.cxx +51 -0
  110. package/deps/couchbase-cxx-client/test/tools/tool_kv_loader.cxx +2 -2
  111. package/deps/couchbase-cxx-client/test/utils/integration_test_guard.cxx +2 -0
  112. package/deps/couchbase-cxx-client/test/utils/wait_until.cxx +4 -4
  113. package/deps/couchbase-cxx-client/third_party/docopt/.travis.yml +103 -0
  114. package/deps/couchbase-cxx-client/third_party/docopt/CMakeLists.txt +129 -0
  115. package/deps/couchbase-cxx-client/third_party/docopt/LICENSE-Boost-1.0 +23 -0
  116. package/deps/couchbase-cxx-client/third_party/docopt/LICENSE-MIT +23 -0
  117. package/deps/couchbase-cxx-client/third_party/docopt/README.rst +479 -0
  118. package/deps/couchbase-cxx-client/third_party/docopt/docopt-config.cmake +1 -0
  119. package/deps/couchbase-cxx-client/third_party/docopt/docopt.cpp +687 -0
  120. package/deps/couchbase-cxx-client/third_party/docopt/docopt.h +98 -0
  121. package/deps/couchbase-cxx-client/third_party/docopt/docopt.pc.in +9 -0
  122. package/deps/couchbase-cxx-client/third_party/docopt/docopt_private.h +676 -0
  123. package/deps/couchbase-cxx-client/third_party/docopt/docopt_util.h +122 -0
  124. package/deps/couchbase-cxx-client/third_party/docopt/docopt_value.h +341 -0
  125. package/deps/couchbase-cxx-client/third_party/docopt/examples/naval_fate.cpp +36 -0
  126. package/deps/couchbase-cxx-client/third_party/docopt/main.cpp +16 -0
  127. package/deps/couchbase-cxx-client/third_party/docopt/run_testcase.cpp +40 -0
  128. package/deps/couchbase-cxx-client/third_party/docopt/run_tests.py +72 -0
  129. package/deps/couchbase-cxx-client/third_party/docopt/testcases.docopt +957 -0
  130. package/deps/couchbase-cxx-client/tools/CMakeLists.txt +14 -0
  131. package/deps/couchbase-cxx-client/tools/cbc.cxx +65 -0
  132. package/deps/couchbase-cxx-client/tools/command.hxx +31 -0
  133. package/deps/couchbase-cxx-client/tools/command_registry.cxx +43 -0
  134. package/deps/couchbase-cxx-client/tools/command_registry.hxx +39 -0
  135. package/deps/couchbase-cxx-client/tools/get.cxx +267 -0
  136. package/deps/couchbase-cxx-client/tools/get.hxx +26 -0
  137. package/deps/couchbase-cxx-client/tools/query.cxx +441 -0
  138. package/deps/couchbase-cxx-client/tools/query.hxx +26 -0
  139. package/deps/couchbase-cxx-client/tools/utils.cxx +418 -0
  140. package/deps/couchbase-cxx-client/tools/utils.hxx +150 -0
  141. package/deps/couchbase-cxx-client/tools/version.cxx +82 -0
  142. package/deps/couchbase-cxx-client/tools/version.hxx +26 -0
  143. package/dist/authenticators.d.ts +2 -2
  144. package/dist/authenticators.js +1 -2
  145. package/dist/binding.d.ts +32 -16
  146. package/dist/cluster.js +14 -7
  147. package/dist/collection.d.ts +6 -0
  148. package/dist/collection.js +8 -0
  149. package/dist/queryexecutor.js +1 -1
  150. package/dist/queryindexmanager.d.ts +100 -4
  151. package/dist/queryindexmanager.js +344 -118
  152. package/dist/transactions.js +0 -2
  153. package/package.json +1 -1
  154. package/src/connection.cpp +2 -0
  155. package/src/connection.hpp +1 -0
  156. package/src/connection_autogen.cpp +16 -0
  157. package/src/jstocbpp_autogen.hpp +93 -23
  158. package/src/jstocbpp_basic.hpp +24 -0
  159. package/src/jstocbpp_transactions.hpp +0 -8
  160. package/tools/gen-bindings-js.js +1 -0
  161. package/tools/gen-bindings-json.py +4 -2
  162. package/deps/couchbase-cxx-client/core/transactions/logging.cxx +0 -107
@@ -0,0 +1,218 @@
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/build_query_index_options.hxx>
21
+ #include <couchbase/create_primary_query_index_options.hxx>
22
+ #include <couchbase/create_query_index_options.hxx>
23
+ #include <couchbase/drop_primary_query_index_options.hxx>
24
+ #include <couchbase/drop_query_index_options.hxx>
25
+ #include <couchbase/get_all_query_indexes_options.hxx>
26
+ #include <couchbase/watch_query_indexes_options.hxx>
27
+
28
+ #include <future>
29
+ #include <memory>
30
+
31
+ #ifndef COUCHBASE_CXX_CLIENT_DOXYGEN
32
+ namespace couchbase::core
33
+ {
34
+ class cluster;
35
+
36
+ class query_context;
37
+
38
+ } // namespace couchbase::core
39
+ #endif
40
+
41
+ namespace couchbase
42
+ {
43
+ class collection;
44
+
45
+ /**
46
+ * The Query Index Manager interface contains the means for managing indexes used for queries.
47
+ *
48
+ * @since 1.0.0
49
+ * @committed
50
+ */
51
+ class collection_query_index_manager
52
+ {
53
+ public:
54
+ /**
55
+ * Get all indexes within a collection.
56
+ *
57
+ *
58
+ * @param options optional parameters
59
+ * @param handler the handler that implements @ref get_all_query_indexes_handler
60
+ *
61
+ * @since 1.0.0
62
+ * @committed
63
+ */
64
+ void get_all_indexes(const get_all_query_indexes_options& options, get_all_indexes_handler&& handler) const;
65
+
66
+ [[nodiscard]] auto get_all_indexes(const get_all_query_indexes_options& options) const
67
+ -> std::future<std::pair<manager_error_context, std::vector<couchbase::management::query::index>>>
68
+ {
69
+ auto barrier = std::make_shared<std::promise<std::pair<manager_error_context, std::vector<couchbase::management::query::index>>>>();
70
+ auto future = barrier->get_future();
71
+ get_all_indexes(options, [barrier](auto ctx, auto resp) { barrier->set_value({ ctx, resp }); });
72
+ return future;
73
+ }
74
+ /**
75
+ * Create an index on the collection.
76
+ *
77
+ * @param index_name name of the index
78
+ * @param fields the fields to create the index over
79
+ * @param options optional parameters
80
+ * @param handler the handler that implements @ref create_query_index_handler
81
+ *
82
+ * @since 1.0.0
83
+ * @committed
84
+ */
85
+ void create_index(std::string index_name,
86
+ std::vector<std::string> fields,
87
+ const create_query_index_options& options,
88
+ create_query_index_handler&& handler) const;
89
+
90
+ [[nodiscard]] auto create_index(std::string index_name,
91
+ std::vector<std::string> fields,
92
+ const create_query_index_options& options) const -> std::future<manager_error_context>
93
+ {
94
+ auto barrier = std::make_shared<std::promise<manager_error_context>>();
95
+ auto future = barrier->get_future();
96
+ create_index(std::move(index_name), std::move(fields), options, [barrier](auto ctx) { barrier->set_value(ctx); });
97
+ return future;
98
+ }
99
+
100
+ /**
101
+ * Create a primary index on a collection.
102
+ *
103
+ * @param options optional parameters
104
+ * @param handler the handler that implements @ref create_query_index_handler
105
+ *
106
+ * @since 1.0.0
107
+ * @committed
108
+ */
109
+ void create_primary_index(const create_primary_query_index_options& options, create_query_index_handler&& handler) const;
110
+
111
+ [[nodiscard]] auto create_primary_index(const create_primary_query_index_options& options) -> std::future<manager_error_context>
112
+ {
113
+ auto barrier = std::make_shared<std::promise<manager_error_context>>();
114
+ auto future = barrier->get_future();
115
+ create_primary_index(options, [barrier](auto ctx) { barrier->set_value(ctx); });
116
+ return future;
117
+ }
118
+ /**
119
+ * Drop primary index on a collection.
120
+ *
121
+ * @param options optional parameters
122
+ * @param handler the handler that implements @ref drop_query_index_handler
123
+ *
124
+ * @since 1.0.0
125
+ * @committed
126
+ */
127
+ void drop_primary_index(const drop_primary_query_index_options& options, drop_query_index_handler&& handler) const;
128
+
129
+ [[nodiscard]] auto drop_primary_index(const drop_primary_query_index_options& options) const -> std::future<manager_error_context>
130
+ {
131
+ auto barrier = std::make_shared<std::promise<manager_error_context>>();
132
+ auto future = barrier->get_future();
133
+ drop_primary_index(options, [barrier](auto ctx) { barrier->set_value(ctx); });
134
+ return future;
135
+ }
136
+
137
+ /**
138
+ * Drop index in collection.
139
+ *
140
+ * @param index_name name of the index to drop
141
+ * @param options optional parameters
142
+ * @param handler handler that implements @ref drop_query_index_handler
143
+ *
144
+ * @since 1.0.0
145
+ * @committed
146
+ */
147
+ void drop_index(std::string index_name, const drop_query_index_options& options, drop_query_index_handler&& handler) const;
148
+
149
+ [[nodiscard]] auto drop_index(std::string index_name, const drop_query_index_options& options) -> std::future<manager_error_context>
150
+ {
151
+ auto barrier = std::make_shared<std::promise<manager_error_context>>();
152
+ auto future = barrier->get_future();
153
+ drop_index(std::move(index_name), options, [barrier](auto ctx) { barrier->set_value(ctx); });
154
+ return future;
155
+ }
156
+ /**
157
+ * Builds all currently deferred indexes in this collection.
158
+ *
159
+ * By default, this method will build the indexes on the collection.
160
+ *
161
+ * @param options the custom options
162
+ * @param handler the handler that implements @ref build_deferred_query_indexes_handler
163
+ *
164
+ * @since 1.0.0
165
+ * @committed
166
+ */
167
+ void build_deferred_indexes(const build_query_index_options& options, build_deferred_query_indexes_handler&& handler) const;
168
+
169
+ [[nodiscard]] auto build_deferred_indexes(const build_query_index_options& options) const -> std::future<manager_error_context>
170
+ {
171
+ auto barrier = std::make_shared<std::promise<manager_error_context>>();
172
+ auto future = barrier->get_future();
173
+ build_deferred_indexes(options, [barrier](auto ctx) { barrier->set_value(std::move(ctx)); });
174
+ return future;
175
+ }
176
+
177
+ /**
178
+ * Polls the state of a set of indexes, until they all are online.
179
+ *
180
+ * @param index_names names of the indexes to watch
181
+ * @param options optional parameters
182
+ * @param handler handler that implements @ref watch_query_indexes_handler
183
+ *
184
+ * @since 1.0.0
185
+ * @committed
186
+ */
187
+ void watch_indexes(std::vector<std::string> index_names,
188
+ const watch_query_indexes_options& options,
189
+ watch_query_indexes_handler&& handler) const;
190
+
191
+ [[nodiscard]] auto watch_indexes(std::vector<std::string> index_names, const watch_query_indexes_options& options)
192
+ {
193
+ auto barrier = std::make_shared<std::promise<manager_error_context>>();
194
+ auto future = barrier->get_future();
195
+ watch_indexes(std::move(index_names), options, [barrier](auto ctx) { barrier->set_value(ctx); });
196
+ return future;
197
+ }
198
+
199
+ private:
200
+ friend class collection;
201
+
202
+ explicit collection_query_index_manager(std::shared_ptr<couchbase::core::cluster> core,
203
+ std::string bucket_name,
204
+ std::string scope_name,
205
+ std::string collection_name)
206
+ : core_(core)
207
+ , bucket_name_(std::move(bucket_name))
208
+ , scope_name_(std::move(scope_name))
209
+ , collection_name_(std::move(collection_name))
210
+ {
211
+ }
212
+
213
+ std::shared_ptr<couchbase::core::cluster> core_;
214
+ std::string bucket_name_;
215
+ std::string scope_name_;
216
+ std::string collection_name_;
217
+ };
218
+ } // namespace couchbase
@@ -21,6 +21,7 @@
21
21
 
22
22
  #include <memory>
23
23
  #include <string>
24
+ #include <vector>
24
25
 
25
26
  namespace couchbase
26
27
  {
@@ -54,5 +55,7 @@ class configuration_profiles_registry
54
55
  * @internal
55
56
  */
56
57
  static void apply_profile(const std::string& name, couchbase::cluster_options& options);
58
+
59
+ static auto available_profiles() -> std::vector<std::string>;
57
60
  };
58
61
  } // namespace couchbase
@@ -0,0 +1,166 @@
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/common_options.hxx>
21
+ #include <couchbase/error_codes.hxx>
22
+ #include <couchbase/manager_error_context.hxx>
23
+
24
+ #include <optional>
25
+ #include <string>
26
+
27
+ namespace couchbase
28
+ {
29
+ class create_primary_query_index_options : public common_options<create_primary_query_index_options>
30
+ {
31
+ public:
32
+ /**
33
+ * Give the primary index a name
34
+ *
35
+ * defaults to #primary
36
+ *
37
+ * @param index_name
38
+ * @return reference to this object, for use in chaining.
39
+ */
40
+ auto index_name(std::string index_name) -> create_primary_query_index_options&
41
+ {
42
+ index_name_.emplace(index_name);
43
+ return self();
44
+ }
45
+ /**
46
+ * Set flag to ignore error if the index already exists
47
+ *
48
+ * The default is to not ignore the error.
49
+ *
50
+ * @param ignore_if_exists if true, we don't return an error if the index already exists
51
+ * @return reference to this object, for use in chaining.
52
+ *
53
+ * @since 1.0.0
54
+ * @committed
55
+ */
56
+ auto ignore_if_exists(bool ignore_if_exists) -> create_primary_query_index_options&
57
+ {
58
+ ignore_if_exists_ = ignore_if_exists;
59
+ return self();
60
+ }
61
+ /**
62
+ * Set flag to defer building of the index
63
+ *
64
+ * The default is false, meaning start building the index immediately.
65
+ *
66
+ * @param deferred
67
+ * @return reference to this object, for use in chaining.
68
+ *
69
+ * @since 1.0.0
70
+ * @committed
71
+ */
72
+ auto build_deferred(bool deferred) -> create_primary_query_index_options&
73
+ {
74
+ deferred_ = deferred;
75
+ return self();
76
+ }
77
+
78
+ /**
79
+ * Set the number of replicas the index will have.
80
+ *
81
+ *
82
+ * @param num_replicas
83
+ * @return reference to this object, for use in chaining.
84
+ *
85
+ * @since 1.0.0
86
+ * @committed
87
+ */
88
+ auto num_replicas(uint8_t num_replicas) -> create_primary_query_index_options&
89
+ {
90
+ num_replicas_ = num_replicas;
91
+ return self();
92
+ }
93
+
94
+ /**
95
+ * Immutable value object representing consistent options.
96
+ *
97
+ * @since 1.0.0
98
+ * @internal
99
+ */
100
+ struct built : public common_options<create_primary_query_index_options>::built {
101
+ const std::optional<std::string> index_name{};
102
+ bool ignore_if_exists{};
103
+ bool deferred{};
104
+ std::optional<uint8_t> num_replicas{};
105
+ };
106
+
107
+ /**
108
+ * Validates options and returns them as an immutable value.
109
+ *
110
+ * @return consistent options as an immutable value
111
+ *
112
+ * @exception std::system_error with code errc::common::invalid_argument if the options are not valid
113
+ *
114
+ * @since 1.0.0
115
+ * @internal
116
+ */
117
+ [[nodiscard]] auto build() const -> built
118
+ {
119
+ return { build_common_options(), index_name_, ignore_if_exists_, deferred_, num_replicas_ };
120
+ }
121
+
122
+ private:
123
+ std::optional<std::string> index_name_{};
124
+ bool ignore_if_exists_{ false };
125
+ bool deferred_{ false };
126
+ std::optional<uint8_t> num_replicas_{};
127
+ };
128
+
129
+ /**
130
+ * The signature for the handler of the @ref query_index_manager#get_all_indexes() operation
131
+ *
132
+ * @since 1.0.0
133
+ * @uncommitted
134
+ */
135
+
136
+ using create_primary_query_index_handler = std::function<void(couchbase::manager_error_context)>;
137
+
138
+ #ifndef COUCHBASE_CXX_CLIENT_DOXYGEN
139
+ namespace core
140
+ {
141
+ class cluster;
142
+ class query_context;
143
+ namespace impl
144
+ {
145
+
146
+ /**
147
+ * @since 1.0.0
148
+ * @internal
149
+ */
150
+ void
151
+ initiate_create_primary_query_index(std::shared_ptr<couchbase::core::cluster> core,
152
+ std::string bucket_name,
153
+ couchbase::create_primary_query_index_options::built options,
154
+ query_context query_ctx,
155
+ std::string collection_name,
156
+ create_primary_query_index_handler&& handler);
157
+ void
158
+ initiate_create_primary_query_index(std::shared_ptr<couchbase::core::cluster> core,
159
+ std::string bucket_name,
160
+ couchbase::create_primary_query_index_options::built options,
161
+ create_primary_query_index_handler&& handler);
162
+
163
+ #endif
164
+ } // namespace impl
165
+ } // namespace core
166
+ } // namespace couchbase
@@ -0,0 +1,172 @@
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/common_options.hxx>
21
+ #include <couchbase/error_codes.hxx>
22
+ #include <couchbase/manager_error_context.hxx>
23
+
24
+ #include <optional>
25
+ #include <string>
26
+
27
+ namespace couchbase
28
+ {
29
+ class create_query_index_options : public common_options<create_query_index_options>
30
+ {
31
+ public:
32
+ /**
33
+ * Set flag to ignore error if the index already exists
34
+ *
35
+ * The default is to not ignore the error.
36
+ *
37
+ * @param ignore_if_exists if true, we don't return an error if the index already exists
38
+ * @return reference to this object, for use in chaining.
39
+ *
40
+ * @since 1.0.0
41
+ * @committed
42
+ */
43
+ auto ignore_if_exists(bool ignore_if_exists) -> create_query_index_options&
44
+ {
45
+ ignore_if_exists_ = ignore_if_exists;
46
+ return self();
47
+ }
48
+ /**
49
+ * Set flag to defer building of the index
50
+ *
51
+ * The default is false, meaning start building the index immediately.
52
+ *
53
+ * @param deferred
54
+ * @return reference to this object, for use in chaining.
55
+ *
56
+ * @since 1.0.0
57
+ * @committed
58
+ */
59
+ auto build_deferred(bool deferred) -> create_query_index_options&
60
+ {
61
+ deferred_ = deferred;
62
+ return self();
63
+ }
64
+
65
+ /**
66
+ * Set the number of replicas the index will have.
67
+ *
68
+ *
69
+ * @param num_replicas
70
+ * @return reference to this object, for use in chaining.
71
+ *
72
+ * @since 1.0.0
73
+ * @committed
74
+ */
75
+ auto num_replicas(uint8_t num_replicas) -> create_query_index_options&
76
+ {
77
+ num_replicas_ = num_replicas;
78
+ return self();
79
+ }
80
+ /**
81
+ * Supply an extra condition on this index.
82
+ *
83
+ * This is the contents of the WHERE clause when creating the index.
84
+ *
85
+ * @param condition
86
+ * @return reference to this object, for use in chaining.
87
+ */
88
+ auto condition(std::string condition) -> create_query_index_options&
89
+ {
90
+ condition_.emplace(std::move(condition));
91
+ return self();
92
+ }
93
+
94
+ /**
95
+ * Immutable value object representing consistent options.
96
+ *
97
+ * @since 1.0.0
98
+ * @internal
99
+ */
100
+ struct built : public common_options<create_query_index_options>::built {
101
+ bool ignore_if_exists{};
102
+ bool deferred{};
103
+ std::optional<std::string> condition{};
104
+ std::optional<uint8_t> num_replicas{};
105
+ };
106
+
107
+ /**
108
+ * Validates options and returns them as an immutable value.
109
+ *
110
+ * @return consistent options as an immutable value
111
+ *
112
+ * @exception std::system_error with code errc::common::invalid_argument if the options are not valid
113
+ *
114
+ * @since 1.0.0
115
+ * @internal
116
+ */
117
+ [[nodiscard]] auto build() const -> built
118
+ {
119
+ return { build_common_options(), ignore_if_exists_, deferred_, condition_, num_replicas_ };
120
+ }
121
+
122
+ private:
123
+ std::optional<std::string> scope_name_{};
124
+ std::optional<std::string> collection_name_{};
125
+ bool ignore_if_exists_{ false };
126
+ bool deferred_{ false };
127
+ std::optional<uint8_t> num_replicas_{};
128
+ std::optional<std::string> condition_{};
129
+ };
130
+
131
+ /**
132
+ * The signature for the handler of the @ref query_index_manager#get_all_indexes() operation
133
+ *
134
+ * @since 1.0.0
135
+ * @uncommitted
136
+ */
137
+
138
+ using create_query_index_handler = std::function<void(couchbase::manager_error_context)>;
139
+
140
+ #ifndef COUCHBASE_CXX_CLIENT_DOXYGEN
141
+ namespace core
142
+ {
143
+ class cluster;
144
+ class query_context;
145
+ namespace impl
146
+ {
147
+
148
+ /**
149
+ * @since 1.0.0
150
+ * @internal
151
+ */
152
+ void
153
+ initiate_create_query_index(std::shared_ptr<couchbase::core::cluster> core,
154
+ std::string bucket_name,
155
+ std::string index_name,
156
+ std::vector<std::string> fields,
157
+ couchbase::create_query_index_options::built options,
158
+ create_query_index_handler&& handler);
159
+ void
160
+ initiate_create_query_index(std::shared_ptr<couchbase::core::cluster> core,
161
+ std::string bucket_name,
162
+ std::string index_name,
163
+ std::vector<std::string> fields,
164
+ couchbase::create_query_index_options::built options,
165
+ query_context query_ctx,
166
+ std::string collection_name,
167
+ create_query_index_handler&& handler);
168
+
169
+ #endif
170
+ } // namespace impl
171
+ } // namespace core
172
+ } // namespace couchbase
@@ -0,0 +1,129 @@
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/common_options.hxx>
21
+ #include <couchbase/error_codes.hxx>
22
+ #include <couchbase/manager_error_context.hxx>
23
+
24
+ #include <optional>
25
+ #include <string>
26
+
27
+ namespace couchbase
28
+ {
29
+ class drop_primary_query_index_options : public common_options<drop_primary_query_index_options>
30
+ {
31
+ public:
32
+ /**
33
+ * Name of the primary index
34
+ *
35
+ * If created with an optional name, specify that here as well.
36
+ * @param index_name
37
+ * @return reference to this object, for use in chaining.
38
+ */
39
+ auto index_name(std::string index_name) -> drop_primary_query_index_options&
40
+ {
41
+ index_name_.emplace(index_name);
42
+ return self();
43
+ }
44
+ /**
45
+ * Set flag to ignore error if the index already exists
46
+ *
47
+ * The default is to not ignore the error.
48
+ *
49
+ * @param ignore_if_exists if true, we don't return an error if the index already exists
50
+ * @return reference to this object, for use in chaining.
51
+ *
52
+ * @since 1.0.0
53
+ * @committed
54
+ */
55
+ auto ignore_if_not_exists(bool ignore_if_not_exists) -> drop_primary_query_index_options&
56
+ {
57
+ ignore_if_not_exists_ = ignore_if_not_exists;
58
+ return self();
59
+ }
60
+ /**
61
+ * Immutable value object representing consistent options.
62
+ *
63
+ * @since 1.0.0
64
+ * @internal
65
+ */
66
+ struct built : public common_options<drop_primary_query_index_options>::built {
67
+ std::optional<std::string> index_name;
68
+ bool ignore_if_not_exists{};
69
+ };
70
+
71
+ /**
72
+ * Validates options and returns them as an immutable value.
73
+ *
74
+ * @return consistent options as an immutable value
75
+ *
76
+ * @exception std::system_error with code errc::common::invalid_argument if the options are not valid
77
+ *
78
+ * @since 1.0.0
79
+ * @internal
80
+ */
81
+ [[nodiscard]] auto build() const -> built
82
+ {
83
+ return { build_common_options(), index_name_, ignore_if_not_exists_ };
84
+ }
85
+
86
+ private:
87
+ std::optional<std::string> index_name_{};
88
+ bool ignore_if_not_exists_{ false };
89
+ };
90
+
91
+ /**
92
+ * The signature for the handler of the @ref query_index_manager#get_all_indexes() operation
93
+ *
94
+ * @since 1.0.0
95
+ * @uncommitted
96
+ */
97
+
98
+ using drop_primary_query_index_handler = std::function<void(couchbase::manager_error_context)>;
99
+
100
+ #ifndef COUCHBASE_CXX_CLIENT_DOXYGEN
101
+ namespace core
102
+ {
103
+ class cluster;
104
+ class query_context;
105
+ namespace impl
106
+ {
107
+
108
+ /**
109
+ * @since 1.0.0
110
+ * @internal
111
+ */
112
+ void
113
+ initiate_drop_primary_query_index(std::shared_ptr<couchbase::core::cluster> core,
114
+ std::string bucket_name,
115
+ couchbase::drop_primary_query_index_options::built options,
116
+ query_context query_ctx,
117
+ std::string collection_name,
118
+ drop_primary_query_index_handler&& handler);
119
+
120
+ void
121
+ initiate_drop_primary_query_index(std::shared_ptr<couchbase::core::cluster> core,
122
+ std::string bucket_name,
123
+ couchbase::drop_primary_query_index_options::built options,
124
+ drop_primary_query_index_handler&& handler);
125
+
126
+ #endif
127
+ } // namespace impl
128
+ } // namespace core
129
+ } // namespace couchbase