couchbase 3.5.0-x86_64-linux-musl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE.txt +202 -0
- data/README.md +154 -0
- data/ext/extconf.rb +0 -0
- data/lib/active_support/cache/couchbase_store.rb +339 -0
- data/lib/couchbase/3.1/libcouchbase.so +0 -0
- data/lib/couchbase/3.2/libcouchbase.so +0 -0
- data/lib/couchbase/3.3/libcouchbase.so +0 -0
- data/lib/couchbase/analytics_options.rb +107 -0
- data/lib/couchbase/authenticator.rb +64 -0
- data/lib/couchbase/binary_collection.rb +128 -0
- data/lib/couchbase/binary_collection_options.rb +24 -0
- data/lib/couchbase/bucket.rb +144 -0
- data/lib/couchbase/cluster.rb +460 -0
- data/lib/couchbase/cluster_registry.rb +49 -0
- data/lib/couchbase/collection.rb +705 -0
- data/lib/couchbase/collection_options.rb +399 -0
- data/lib/couchbase/config_profiles.rb +55 -0
- data/lib/couchbase/configuration.rb +56 -0
- data/lib/couchbase/datastructures/couchbase_list.rb +160 -0
- data/lib/couchbase/datastructures/couchbase_map.rb +194 -0
- data/lib/couchbase/datastructures/couchbase_queue.rb +134 -0
- data/lib/couchbase/datastructures/couchbase_set.rb +128 -0
- data/lib/couchbase/datastructures.rb +24 -0
- data/lib/couchbase/diagnostics.rb +181 -0
- data/lib/couchbase/errors.rb +376 -0
- data/lib/couchbase/json_transcoder.rb +39 -0
- data/lib/couchbase/key_value_scan.rb +117 -0
- data/lib/couchbase/libcouchbase.rb +6 -0
- data/lib/couchbase/logger.rb +85 -0
- data/lib/couchbase/management/analytics_index_manager.rb +1127 -0
- data/lib/couchbase/management/bucket_manager.rb +443 -0
- data/lib/couchbase/management/collection_manager.rb +470 -0
- data/lib/couchbase/management/collection_query_index_manager.rb +222 -0
- data/lib/couchbase/management/query_index_manager.rb +617 -0
- data/lib/couchbase/management/scope_search_index_manager.rb +198 -0
- data/lib/couchbase/management/search_index_manager.rb +424 -0
- data/lib/couchbase/management/user_manager.rb +468 -0
- data/lib/couchbase/management/view_index_manager.rb +237 -0
- data/lib/couchbase/management.rb +29 -0
- data/lib/couchbase/mutation_state.rb +63 -0
- data/lib/couchbase/options.rb +2837 -0
- data/lib/couchbase/protostellar/binary_collection.rb +55 -0
- data/lib/couchbase/protostellar/bucket.rb +51 -0
- data/lib/couchbase/protostellar/client.rb +99 -0
- data/lib/couchbase/protostellar/cluster.rb +163 -0
- data/lib/couchbase/protostellar/collection.rb +152 -0
- data/lib/couchbase/protostellar/connect_options.rb +63 -0
- data/lib/couchbase/protostellar/error_handling.rb +203 -0
- data/lib/couchbase/protostellar/generated/admin/bucket/v1/bucket_pb.rb +61 -0
- data/lib/couchbase/protostellar/generated/admin/bucket/v1/bucket_services_pb.rb +35 -0
- data/lib/couchbase/protostellar/generated/admin/collection/v1/collection_pb.rb +57 -0
- data/lib/couchbase/protostellar/generated/admin/collection/v1/collection_services_pb.rb +36 -0
- data/lib/couchbase/protostellar/generated/admin/query/v1/query_pb.rb +61 -0
- data/lib/couchbase/protostellar/generated/admin/query/v1/query_services_pb.rb +37 -0
- data/lib/couchbase/protostellar/generated/admin/search/v1/search_pb.rb +72 -0
- data/lib/couchbase/protostellar/generated/admin/search/v1/search_services_pb.rb +44 -0
- data/lib/couchbase/protostellar/generated/analytics/v1/analytics_pb.rb +52 -0
- data/lib/couchbase/protostellar/generated/analytics/v1/analytics_services_pb.rb +30 -0
- data/lib/couchbase/protostellar/generated/internal/hooks/v1/hooks_pb.rb +70 -0
- data/lib/couchbase/protostellar/generated/internal/hooks/v1/hooks_services_pb.rb +36 -0
- data/lib/couchbase/protostellar/generated/kv/v1/kv_pb.rb +97 -0
- data/lib/couchbase/protostellar/generated/kv/v1/kv_services_pb.rb +46 -0
- data/lib/couchbase/protostellar/generated/query/v1/query_pb.rb +57 -0
- data/lib/couchbase/protostellar/generated/query/v1/query_services_pb.rb +30 -0
- data/lib/couchbase/protostellar/generated/routing/v1/routing_pb.rb +52 -0
- data/lib/couchbase/protostellar/generated/routing/v1/routing_services_pb.rb +30 -0
- data/lib/couchbase/protostellar/generated/search/v1/search_pb.rb +99 -0
- data/lib/couchbase/protostellar/generated/search/v1/search_services_pb.rb +30 -0
- data/lib/couchbase/protostellar/generated/transactions/v1/transactions_pb.rb +57 -0
- data/lib/couchbase/protostellar/generated/transactions/v1/transactions_services_pb.rb +36 -0
- data/lib/couchbase/protostellar/generated/view/v1/view_pb.rb +51 -0
- data/lib/couchbase/protostellar/generated/view/v1/view_services_pb.rb +30 -0
- data/lib/couchbase/protostellar/generated.rb +9 -0
- data/lib/couchbase/protostellar/management/bucket_manager.rb +67 -0
- data/lib/couchbase/protostellar/management/collection_manager.rb +94 -0
- data/lib/couchbase/protostellar/management/collection_query_index_manager.rb +124 -0
- data/lib/couchbase/protostellar/management/query_index_manager.rb +112 -0
- data/lib/couchbase/protostellar/management.rb +24 -0
- data/lib/couchbase/protostellar/request.rb +78 -0
- data/lib/couchbase/protostellar/request_behaviour.rb +42 -0
- data/lib/couchbase/protostellar/request_generator/admin/bucket.rb +124 -0
- data/lib/couchbase/protostellar/request_generator/admin/collection.rb +94 -0
- data/lib/couchbase/protostellar/request_generator/admin/query.rb +130 -0
- data/lib/couchbase/protostellar/request_generator/admin.rb +24 -0
- data/lib/couchbase/protostellar/request_generator/kv.rb +474 -0
- data/lib/couchbase/protostellar/request_generator/query.rb +133 -0
- data/lib/couchbase/protostellar/request_generator/search.rb +387 -0
- data/lib/couchbase/protostellar/request_generator.rb +26 -0
- data/lib/couchbase/protostellar/response_converter/admin/bucket.rb +55 -0
- data/lib/couchbase/protostellar/response_converter/admin/collection.rb +42 -0
- data/lib/couchbase/protostellar/response_converter/admin/query.rb +59 -0
- data/lib/couchbase/protostellar/response_converter/admin.rb +24 -0
- data/lib/couchbase/protostellar/response_converter/kv.rb +151 -0
- data/lib/couchbase/protostellar/response_converter/query.rb +84 -0
- data/lib/couchbase/protostellar/response_converter/search.rb +136 -0
- data/lib/couchbase/protostellar/response_converter.rb +26 -0
- data/lib/couchbase/protostellar/retry/action.rb +38 -0
- data/lib/couchbase/protostellar/retry/orchestrator.rb +60 -0
- data/lib/couchbase/protostellar/retry/reason.rb +67 -0
- data/lib/couchbase/protostellar/retry/strategies/best_effort.rb +49 -0
- data/lib/couchbase/protostellar/retry/strategies.rb +26 -0
- data/lib/couchbase/protostellar/retry.rb +28 -0
- data/lib/couchbase/protostellar/scope.rb +57 -0
- data/lib/couchbase/protostellar/timeout_defaults.rb +30 -0
- data/lib/couchbase/protostellar/timeouts.rb +83 -0
- data/lib/couchbase/protostellar.rb +29 -0
- data/lib/couchbase/query_options.rb +120 -0
- data/lib/couchbase/railtie.rb +45 -0
- data/lib/couchbase/raw_binary_transcoder.rb +37 -0
- data/lib/couchbase/raw_json_transcoder.rb +38 -0
- data/lib/couchbase/raw_string_transcoder.rb +40 -0
- data/lib/couchbase/scope.rb +256 -0
- data/lib/couchbase/search_options.rb +1622 -0
- data/lib/couchbase/subdoc.rb +290 -0
- data/lib/couchbase/transcoder_flags.rb +62 -0
- data/lib/couchbase/utils/generic_logger_adapter.rb +38 -0
- data/lib/couchbase/utils/stdlib_logger_adapter.rb +65 -0
- data/lib/couchbase/utils/time.rb +69 -0
- data/lib/couchbase/utils.rb +21 -0
- data/lib/couchbase/version.rb +23 -0
- data/lib/couchbase/view_options.rb +65 -0
- data/lib/couchbase.rb +28 -0
- data/lib/rails/generators/couchbase/config/config_generator.rb +27 -0
- metadata +190 -0
@@ -0,0 +1,1127 @@
|
|
1
|
+
# Copyright 2020-2021 Couchbase, Inc.
|
2
|
+
#
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
+
# you may not use this file except in compliance with the License.
|
5
|
+
# You may obtain a copy of the License at
|
6
|
+
#
|
7
|
+
# http://www.apache.org/licenses/LICENSE-2.0
|
8
|
+
#
|
9
|
+
# Unless required by applicable law or agreed to in writing, software
|
10
|
+
# distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
+
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
+
# See the License for the specific language governing permissions and
|
13
|
+
# limitations under the License.
|
14
|
+
|
15
|
+
require "couchbase/errors"
|
16
|
+
require "couchbase/options"
|
17
|
+
|
18
|
+
module Couchbase
|
19
|
+
module Management
|
20
|
+
module Options
|
21
|
+
module Analytics
|
22
|
+
# Options for {AnalyticsIndexManager#create_dataverse}
|
23
|
+
class CreateDataverse < ::Couchbase::Options::Base
|
24
|
+
attr_accessor :ignore_if_exists # @return [Boolean]
|
25
|
+
|
26
|
+
# Creates an instance of options for {AnalyticsIndexManager#create_dataverse}
|
27
|
+
#
|
28
|
+
# @param [Boolean] ignore_if_exists if +true+, the exception {Error::DataverseExists} will not be raised if the
|
29
|
+
# dataverse with the specified name already exists.
|
30
|
+
#
|
31
|
+
# @param [Integer, #in_milliseconds, nil] timeout the time in milliseconds allowed for the operation to complete
|
32
|
+
# @param [Proc, nil] retry_strategy the custom retry strategy, if set
|
33
|
+
# @param [Hash, nil] client_context the client context data, if set
|
34
|
+
# @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
|
35
|
+
#
|
36
|
+
# @yieldparam [CreateDataverse] self
|
37
|
+
def initialize(ignore_if_exists: false,
|
38
|
+
timeout: nil,
|
39
|
+
retry_strategy: nil,
|
40
|
+
client_context: nil,
|
41
|
+
parent_span: nil)
|
42
|
+
super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
|
43
|
+
@ignore_if_exists = ignore_if_exists
|
44
|
+
yield self if block_given?
|
45
|
+
end
|
46
|
+
|
47
|
+
# @api private
|
48
|
+
def to_backend
|
49
|
+
{
|
50
|
+
timeout: Utils::Time.extract_duration(@timeout),
|
51
|
+
ignore_if_exists: @ignore_if_exists,
|
52
|
+
}
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
# Options for {AnalyticsIndexManager#drop_dataverse}
|
57
|
+
class DropDataverse < ::Couchbase::Options::Base
|
58
|
+
attr_accessor :ignore_if_does_not_exist # @return [Boolean]
|
59
|
+
|
60
|
+
# Creates an instance of options for {AnalyticsIndexManager#create_dataverse}
|
61
|
+
#
|
62
|
+
# @param [Boolean] ignore_if_does_not_exist if +true+, the exception {Error::DataverseNotFound} will not be raised
|
63
|
+
# if the dataverse with the specified name does not exist.
|
64
|
+
#
|
65
|
+
# @param [Integer, #in_milliseconds, nil] timeout the time in milliseconds allowed for the operation to complete
|
66
|
+
# @param [Proc, nil] retry_strategy the custom retry strategy, if set
|
67
|
+
# @param [Hash, nil] client_context the client context data, if set
|
68
|
+
# @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
|
69
|
+
#
|
70
|
+
# @yieldparam [DropDataverse] self
|
71
|
+
def initialize(ignore_if_does_not_exist: false,
|
72
|
+
timeout: nil,
|
73
|
+
retry_strategy: nil,
|
74
|
+
client_context: nil,
|
75
|
+
parent_span: nil)
|
76
|
+
super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
|
77
|
+
@ignore_if_does_not_exist = ignore_if_does_not_exist
|
78
|
+
yield self if block_given?
|
79
|
+
end
|
80
|
+
|
81
|
+
# @api private
|
82
|
+
def to_backend
|
83
|
+
{
|
84
|
+
timeout: Utils::Time.extract_duration(@timeout),
|
85
|
+
ignore_if_does_not_exist: @ignore_if_does_not_exist,
|
86
|
+
}
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
# Options for {AnalyticsIndexManager#create_dataset}
|
91
|
+
class CreateDataset < ::Couchbase::Options::Base
|
92
|
+
attr_accessor :ignore_if_exists # @return [Boolean]
|
93
|
+
attr_accessor :condition # @return [String]
|
94
|
+
attr_accessor :dataverse_name # @return [String]
|
95
|
+
|
96
|
+
# Creates an instance of options for {AnalyticsIndexManager#create_dataset}
|
97
|
+
#
|
98
|
+
# @param [Boolean] ignore_if_exists if +true+, the exception {Error::DatasetExists} will not be raised
|
99
|
+
# if the dataset with the specified name already exists.
|
100
|
+
# @param [String] condition WHERE clause to use for creating dataset
|
101
|
+
# @param [String] dataverse_name the name of the dataverse to use (defaults to +nil+)
|
102
|
+
#
|
103
|
+
# @param [Integer, #in_milliseconds, nil] timeout the time in milliseconds allowed for the operation to complete
|
104
|
+
# @param [Proc, nil] retry_strategy the custom retry strategy, if set
|
105
|
+
# @param [Hash, nil] client_context the client context data, if set
|
106
|
+
# @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
|
107
|
+
#
|
108
|
+
# @yieldparam [CreateDataset] self
|
109
|
+
def initialize(ignore_if_exists: false,
|
110
|
+
condition: nil,
|
111
|
+
dataverse_name: nil,
|
112
|
+
timeout: nil,
|
113
|
+
retry_strategy: nil,
|
114
|
+
client_context: nil,
|
115
|
+
parent_span: nil)
|
116
|
+
super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
|
117
|
+
@ignore_if_exists = ignore_if_exists
|
118
|
+
@condition = condition
|
119
|
+
@dataverse_name = dataverse_name
|
120
|
+
yield self if block_given?
|
121
|
+
end
|
122
|
+
|
123
|
+
# @api private
|
124
|
+
def to_backend
|
125
|
+
{
|
126
|
+
timeout: Utils::Time.extract_duration(@timeout),
|
127
|
+
condition: @condition,
|
128
|
+
dataverse_name: @dataverse_name,
|
129
|
+
ignore_if_exists: @ignore_if_exists,
|
130
|
+
}
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
# Options for {AnalyticsIndexManager#drop_dataset}
|
135
|
+
class DropDataset < ::Couchbase::Options::Base
|
136
|
+
attr_accessor :ignore_if_does_not_exist # @return [Boolean]
|
137
|
+
attr_accessor :dataverse_name # @return [String]
|
138
|
+
|
139
|
+
# Creates an instance of options for {AnalyticsIndexManager#drop_dataset}
|
140
|
+
#
|
141
|
+
# @param [Boolean] ignore_if_does_not_exist if +true+, the exception {Error::DatasetNotFound} will not be raised
|
142
|
+
# if the dataset with the specified name does not exist.
|
143
|
+
# @param [String] dataverse_name the name of the dataverse to use (defaults to +nil+)
|
144
|
+
#
|
145
|
+
# @param [Integer, #in_milliseconds, nil] timeout the time in milliseconds allowed for the operation to complete
|
146
|
+
# @param [Proc, nil] retry_strategy the custom retry strategy, if set
|
147
|
+
# @param [Hash, nil] client_context the client context data, if set
|
148
|
+
# @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
|
149
|
+
#
|
150
|
+
# @yieldparam [DropDataset] self
|
151
|
+
def initialize(ignore_if_does_not_exist: false,
|
152
|
+
dataverse_name: nil,
|
153
|
+
timeout: nil,
|
154
|
+
retry_strategy: nil,
|
155
|
+
client_context: nil,
|
156
|
+
parent_span: nil)
|
157
|
+
super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
|
158
|
+
@ignore_if_does_not_exist = ignore_if_does_not_exist
|
159
|
+
@dataverse_name = dataverse_name
|
160
|
+
yield self if block_given?
|
161
|
+
end
|
162
|
+
|
163
|
+
# @api private
|
164
|
+
def to_backend
|
165
|
+
{
|
166
|
+
timeout: Utils::Time.extract_duration(@timeout),
|
167
|
+
dataverse_name: @dataverse_name,
|
168
|
+
ignore_if_does_not_exist: @ignore_if_does_not_exist,
|
169
|
+
}
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
# Options for {AnalyticsIndexManager#get_all_datasets}
|
174
|
+
class GetAllDatasets < ::Couchbase::Options::Base
|
175
|
+
# Creates an instance of options for {AnalyticsIndexManager#get_all_datasets}
|
176
|
+
#
|
177
|
+
# @param [Integer, #in_milliseconds, nil] timeout the time in milliseconds allowed for the operation to complete
|
178
|
+
# @param [Proc, nil] retry_strategy the custom retry strategy, if set
|
179
|
+
# @param [Hash, nil] client_context the client context data, if set
|
180
|
+
# @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
|
181
|
+
#
|
182
|
+
# @yieldparam [GetAllDatasets] self
|
183
|
+
def initialize(timeout: nil,
|
184
|
+
retry_strategy: nil,
|
185
|
+
client_context: nil,
|
186
|
+
parent_span: nil)
|
187
|
+
super
|
188
|
+
yield self if block_given?
|
189
|
+
end
|
190
|
+
end
|
191
|
+
|
192
|
+
# Options for {AnalyticsIndexManager#create_index}
|
193
|
+
class CreateIndex < ::Couchbase::Options::Base
|
194
|
+
attr_accessor :ignore_if_exists # @return [Boolean]
|
195
|
+
attr_accessor :dataverse_name # @return [String]
|
196
|
+
|
197
|
+
# Creates an instance of options for {AnalyticsIndexManager#create_index}
|
198
|
+
#
|
199
|
+
# @param [Boolean] ignore_if_exists if +true+, the exception {Error::DatasetExists} will not be raised
|
200
|
+
# if the dataset with the specified name already exists.
|
201
|
+
# @param [String] dataverse_name the name of the dataverse to use (defaults to +nil+)
|
202
|
+
#
|
203
|
+
# @param [Integer, #in_milliseconds, nil] timeout the time in milliseconds allowed for the operation to complete
|
204
|
+
# @param [Proc, nil] retry_strategy the custom retry strategy, if set
|
205
|
+
# @param [Hash, nil] client_context the client context data, if set
|
206
|
+
# @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
|
207
|
+
#
|
208
|
+
# @yieldparam [CreateIndex] self
|
209
|
+
def initialize(ignore_if_exists: false,
|
210
|
+
dataverse_name: nil,
|
211
|
+
timeout: nil,
|
212
|
+
retry_strategy: nil,
|
213
|
+
client_context: nil,
|
214
|
+
parent_span: nil)
|
215
|
+
super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
|
216
|
+
@ignore_if_exists = ignore_if_exists
|
217
|
+
@dataverse_name = dataverse_name
|
218
|
+
yield self if block_given?
|
219
|
+
end
|
220
|
+
|
221
|
+
# @api private
|
222
|
+
def to_backend
|
223
|
+
{
|
224
|
+
timeout: Utils::Time.extract_duration(@timeout),
|
225
|
+
dataverse_name: @dataverse_name,
|
226
|
+
ignore_if_exists: @ignore_if_exists,
|
227
|
+
}
|
228
|
+
end
|
229
|
+
end
|
230
|
+
|
231
|
+
# Options for {AnalyticsIndexManager#drop_index}
|
232
|
+
class DropIndex < ::Couchbase::Options::Base
|
233
|
+
attr_accessor :ignore_if_does_not_exist # @return [Boolean]
|
234
|
+
attr_accessor :dataverse_name # @return [String]
|
235
|
+
|
236
|
+
# Creates an instance of options for {AnalyticsIndexManager#drop_index}
|
237
|
+
#
|
238
|
+
# @param [Boolean] ignore_if_does_not_exist if +true+, the exception {Error::DatasetNotFound} will not be raised
|
239
|
+
# if the dataset with the specified name does not exist.
|
240
|
+
# @param [String] dataverse_name the name of the dataverse to use (defaults to +nil+)
|
241
|
+
#
|
242
|
+
# @param [Integer, #in_milliseconds, nil] timeout the time in milliseconds allowed for the operation to complete
|
243
|
+
# @param [Proc, nil] retry_strategy the custom retry strategy, if set
|
244
|
+
# @param [Hash, nil] client_context the client context data, if set
|
245
|
+
# @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
|
246
|
+
#
|
247
|
+
# @yieldparam [DropIndex] self
|
248
|
+
def initialize(ignore_if_does_not_exist: false,
|
249
|
+
dataverse_name: nil,
|
250
|
+
timeout: nil,
|
251
|
+
retry_strategy: nil,
|
252
|
+
client_context: nil,
|
253
|
+
parent_span: nil)
|
254
|
+
super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
|
255
|
+
@ignore_if_does_not_exist = ignore_if_does_not_exist
|
256
|
+
@dataverse_name = dataverse_name
|
257
|
+
yield self if block_given?
|
258
|
+
end
|
259
|
+
|
260
|
+
# @api private
|
261
|
+
def to_backend
|
262
|
+
{
|
263
|
+
timeout: Utils::Time.extract_duration(@timeout),
|
264
|
+
dataverse_name: @dataverse_name,
|
265
|
+
ignore_if_does_not_exist: @ignore_if_does_not_exist,
|
266
|
+
}
|
267
|
+
end
|
268
|
+
end
|
269
|
+
|
270
|
+
# Options for {AnalyticsIndexManager#get_all_indexes}
|
271
|
+
class GetAllIndexes < ::Couchbase::Options::Base
|
272
|
+
# Creates an instance of options for {AnalyticsIndexManager#get_all_indexes}
|
273
|
+
#
|
274
|
+
# @param [Integer, #in_milliseconds, nil] timeout the time in milliseconds allowed for the operation to complete
|
275
|
+
# @param [Proc, nil] retry_strategy the custom retry strategy, if set
|
276
|
+
# @param [Hash, nil] client_context the client context data, if set
|
277
|
+
# @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
|
278
|
+
#
|
279
|
+
# @yieldparam [GetAllIndexes] self
|
280
|
+
def initialize(timeout: nil,
|
281
|
+
retry_strategy: nil,
|
282
|
+
client_context: nil,
|
283
|
+
parent_span: nil)
|
284
|
+
super
|
285
|
+
yield self if block_given?
|
286
|
+
end
|
287
|
+
end
|
288
|
+
|
289
|
+
# Options for {AnalyticsIndexManager#connect_link}
|
290
|
+
class ConnectLink < ::Couchbase::Options::Base
|
291
|
+
attr_accessor :link_name # @return [String]
|
292
|
+
attr_accessor :force # @return [Boolean]
|
293
|
+
attr_accessor :dataverse_name # @return [String]
|
294
|
+
|
295
|
+
# Creates an instance of options for {AnalyticsIndexManager#connect_link}
|
296
|
+
#
|
297
|
+
# @param [String] link_name the name of the link
|
298
|
+
# @param [Boolean] force if +true+, link creation will be forced even if the bucket UUID changed, for example
|
299
|
+
# due to the bucket being deleted and recreated
|
300
|
+
# @param [String] dataverse_name the name of the dataverse to use (defaults to +nil+)
|
301
|
+
#
|
302
|
+
# @param [Integer, #in_milliseconds, nil] timeout the time in milliseconds allowed for the operation to complete
|
303
|
+
# @param [Proc, nil] retry_strategy the custom retry strategy, if set
|
304
|
+
# @param [Hash, nil] client_context the client context data, if set
|
305
|
+
# @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
|
306
|
+
#
|
307
|
+
# @yieldparam [ConnectLink] self
|
308
|
+
def initialize(link_name: "Local",
|
309
|
+
force: false,
|
310
|
+
dataverse_name: nil,
|
311
|
+
timeout: nil,
|
312
|
+
retry_strategy: nil,
|
313
|
+
client_context: nil,
|
314
|
+
parent_span: nil)
|
315
|
+
super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
|
316
|
+
@link_name = link_name
|
317
|
+
@force = force
|
318
|
+
@dataverse_name = dataverse_name
|
319
|
+
yield self if block_given?
|
320
|
+
end
|
321
|
+
|
322
|
+
# @api private
|
323
|
+
def to_backend
|
324
|
+
{
|
325
|
+
timeout: Utils::Time.extract_duration(@timeout),
|
326
|
+
link_name: @link_name,
|
327
|
+
force: @force,
|
328
|
+
dataverse_name: @dataverse_name,
|
329
|
+
}
|
330
|
+
end
|
331
|
+
end
|
332
|
+
|
333
|
+
# Options for {AnalyticsIndexManager#connect_link}
|
334
|
+
class DisconnectLink < ::Couchbase::Options::Base
|
335
|
+
attr_accessor :link_name # @return [String]
|
336
|
+
attr_accessor :dataverse_name # @return [String]
|
337
|
+
|
338
|
+
# Creates an instance of options for {AnalyticsIndexManager#disconnect_link}
|
339
|
+
#
|
340
|
+
# @param [String] link_name the name of the link
|
341
|
+
# @param [String] dataverse_name the name of the dataverse to use (defaults to +nil+)
|
342
|
+
#
|
343
|
+
# @param [Integer, #in_milliseconds, nil] timeout the time in milliseconds allowed for the operation to complete
|
344
|
+
# @param [Proc, nil] retry_strategy the custom retry strategy, if set
|
345
|
+
# @param [Hash, nil] client_context the client context data, if set
|
346
|
+
# @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
|
347
|
+
#
|
348
|
+
# @yieldparam [DisconnectLink] self
|
349
|
+
def initialize(link_name: "Local",
|
350
|
+
dataverse_name: nil,
|
351
|
+
timeout: nil,
|
352
|
+
retry_strategy: nil,
|
353
|
+
client_context: nil,
|
354
|
+
parent_span: nil)
|
355
|
+
super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
|
356
|
+
@link_name = link_name
|
357
|
+
@dataverse_name = dataverse_name
|
358
|
+
yield self if block_given?
|
359
|
+
end
|
360
|
+
|
361
|
+
# @api private
|
362
|
+
def to_backend
|
363
|
+
{
|
364
|
+
timeout: Utils::Time.extract_duration(@timeout),
|
365
|
+
link_name: @link_name,
|
366
|
+
dataverse_name: @dataverse_name,
|
367
|
+
}
|
368
|
+
end
|
369
|
+
end
|
370
|
+
|
371
|
+
# Options for {AnalyticsIndexManager#get_pending_mutations}
|
372
|
+
class GetPendingMutations < ::Couchbase::Options::Base
|
373
|
+
# Creates an instance of options for {AnalyticsIndexManager#get_pending_mutations}
|
374
|
+
#
|
375
|
+
# @param [Integer, #in_milliseconds, nil] timeout the time in milliseconds allowed for the operation to complete
|
376
|
+
# @param [Proc, nil] retry_strategy the custom retry strategy, if set
|
377
|
+
# @param [Hash, nil] client_context the client context data, if set
|
378
|
+
# @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
|
379
|
+
#
|
380
|
+
# @yieldparam [GetPendingMutations] self
|
381
|
+
def initialize(timeout: nil,
|
382
|
+
retry_strategy: nil,
|
383
|
+
client_context: nil,
|
384
|
+
parent_span: nil)
|
385
|
+
super
|
386
|
+
yield self if block_given?
|
387
|
+
end
|
388
|
+
end
|
389
|
+
|
390
|
+
# Options for {AnalyticsIndexManager#create_link}
|
391
|
+
class CreateLink < ::Couchbase::Options::Base
|
392
|
+
# Creates an instance of options for {AnalyticsIndexManager#create_link}
|
393
|
+
#
|
394
|
+
# @param [Integer, #in_milliseconds, nil] timeout the time in milliseconds allowed for the operation to complete
|
395
|
+
# @param [Proc, nil] retry_strategy the custom retry strategy, if set
|
396
|
+
# @param [Hash, nil] client_context the client context data, if set
|
397
|
+
# @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
|
398
|
+
#
|
399
|
+
# @yieldparam [CreateLink] self
|
400
|
+
def initialize(timeout: nil,
|
401
|
+
retry_strategy: nil,
|
402
|
+
client_context: nil,
|
403
|
+
parent_span: nil)
|
404
|
+
super
|
405
|
+
yield self if block_given?
|
406
|
+
end
|
407
|
+
|
408
|
+
# @api private
|
409
|
+
def to_backend
|
410
|
+
{
|
411
|
+
timeout: Utils::Time.extract_duration(@timeout),
|
412
|
+
}
|
413
|
+
end
|
414
|
+
end
|
415
|
+
|
416
|
+
# Options for {AnalyticsIndexManager#replace_link}
|
417
|
+
class ReplaceLink < ::Couchbase::Options::Base
|
418
|
+
# Creates an instance of options for {AnalyticsIndexManager#replace_link}
|
419
|
+
#
|
420
|
+
# @param [Integer, #in_milliseconds, nil] timeout the time in milliseconds allowed for the operation to complete
|
421
|
+
# @param [Proc, nil] retry_strategy the custom retry strategy, if set
|
422
|
+
# @param [Hash, nil] client_context the client context data, if set
|
423
|
+
# @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
|
424
|
+
#
|
425
|
+
# @yieldparam [ReplaceLink] self
|
426
|
+
def initialize(timeout: nil,
|
427
|
+
retry_strategy: nil,
|
428
|
+
client_context: nil,
|
429
|
+
parent_span: nil)
|
430
|
+
super
|
431
|
+
yield self if block_given?
|
432
|
+
end
|
433
|
+
|
434
|
+
# @api private
|
435
|
+
def to_backend
|
436
|
+
{
|
437
|
+
timeout: Utils::Time.extract_duration(@timeout),
|
438
|
+
}
|
439
|
+
end
|
440
|
+
end
|
441
|
+
|
442
|
+
# Options for {AnalyticsIndexManager#drop_link}
|
443
|
+
class DropLink < ::Couchbase::Options::Base
|
444
|
+
# Creates an instance of options for {AnalyticsIndexManager#drop_link}
|
445
|
+
#
|
446
|
+
# @param [Integer, #in_milliseconds, nil] timeout the time in milliseconds allowed for the operation to complete
|
447
|
+
# @param [Proc, nil] retry_strategy the custom retry strategy, if set
|
448
|
+
# @param [Hash, nil] client_context the client context data, if set
|
449
|
+
# @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
|
450
|
+
#
|
451
|
+
# @yieldparam [DropLink] self
|
452
|
+
def initialize(timeout: nil,
|
453
|
+
retry_strategy: nil,
|
454
|
+
client_context: nil,
|
455
|
+
parent_span: nil)
|
456
|
+
super
|
457
|
+
yield self if block_given?
|
458
|
+
end
|
459
|
+
|
460
|
+
# @api private
|
461
|
+
def to_backend
|
462
|
+
{
|
463
|
+
timeout: Utils::Time.extract_duration(@timeout),
|
464
|
+
}
|
465
|
+
end
|
466
|
+
end
|
467
|
+
|
468
|
+
# Options for {AnalyticsIndexManager#get_links}
|
469
|
+
class GetLinks < ::Couchbase::Options::Base
|
470
|
+
attr_accessor :dataverse # @return [String, nil]
|
471
|
+
attr_accessor :link_type # @return [Symbol, nil]
|
472
|
+
attr_accessor :name # @return [String, nil]
|
473
|
+
|
474
|
+
# Creates an instance of options for {AnalyticsIndexManager#get_links}
|
475
|
+
#
|
476
|
+
# @param [:s3, :azureblob, :couchbase, nil] link_type restricts the results to the given link type.
|
477
|
+
# @param [String, nil] dataverse restricts the results to a given dataverse, can be given in the form of
|
478
|
+
# "namepart" or "namepart1/namepart2".
|
479
|
+
# @param [String, nil] name restricts the results to the link with the specified name. If set then dataverse
|
480
|
+
# must also be set.
|
481
|
+
#
|
482
|
+
# @param [Integer, #in_milliseconds, nil] timeout the time in milliseconds allowed for the operation to
|
483
|
+
# complete
|
484
|
+
# @param [Proc, nil] retry_strategy the custom retry strategy, if set
|
485
|
+
# @param [Hash, nil] client_context the client context data, if set
|
486
|
+
# @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
|
487
|
+
#
|
488
|
+
# @yieldparam [GetLinks] self
|
489
|
+
def initialize(link_type: nil,
|
490
|
+
dataverse: nil,
|
491
|
+
name: nil,
|
492
|
+
timeout: nil,
|
493
|
+
retry_strategy: nil,
|
494
|
+
client_context: nil,
|
495
|
+
parent_span: nil)
|
496
|
+
super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
|
497
|
+
@link_type = link_type
|
498
|
+
@dataverse = dataverse
|
499
|
+
@name = name
|
500
|
+
yield self if block_given?
|
501
|
+
end
|
502
|
+
|
503
|
+
# @api private
|
504
|
+
def to_backend
|
505
|
+
{
|
506
|
+
timeout: Utils::Time.extract_duration(@timeout),
|
507
|
+
link_type: @link_type.to_s,
|
508
|
+
dataverse: @dataverse,
|
509
|
+
name: @name,
|
510
|
+
}
|
511
|
+
end
|
512
|
+
end
|
513
|
+
|
514
|
+
# rubocop:disable Naming/MethodName constructor shortcuts
|
515
|
+
module_function
|
516
|
+
|
517
|
+
# Construct {CreateDataverse} options for {AnalyticsIndexManager#create_dataverse}
|
518
|
+
#
|
519
|
+
# @return [CreateDataverse]
|
520
|
+
def CreateDataverse(**args)
|
521
|
+
CreateDataverse.new(**args)
|
522
|
+
end
|
523
|
+
|
524
|
+
# Construct {DropDataverse} options for {AnalyticsIndexManager#drop_dataverse}
|
525
|
+
#
|
526
|
+
# @return [DropDataverse]
|
527
|
+
def DropDataverse(**args)
|
528
|
+
DropDataverse.new(**args)
|
529
|
+
end
|
530
|
+
|
531
|
+
# Construct {CreateDataset} options for {AnalyticsIndexManager#create_dataset}
|
532
|
+
#
|
533
|
+
# @return [CreateDataset]
|
534
|
+
def CreateDataset(**args)
|
535
|
+
CreateDataset.new(**args)
|
536
|
+
end
|
537
|
+
|
538
|
+
# Construct {DropDataset} options for {AnalyticsIndexManager#drop_dataset}
|
539
|
+
#
|
540
|
+
# @return [DropDataset]
|
541
|
+
def DropDataset(**args)
|
542
|
+
DropDataset.new(**args)
|
543
|
+
end
|
544
|
+
|
545
|
+
# Construct {GetAllDatasets} options for {AnalyticsIndexManager#get_all_datasets}
|
546
|
+
#
|
547
|
+
# @return [GetAllDatasets]
|
548
|
+
def GetAllDatasets(**args)
|
549
|
+
GetAllDatasets.new(**args)
|
550
|
+
end
|
551
|
+
|
552
|
+
# Construct {CreateIndex} options for {AnalyticsIndexManager#create_index}
|
553
|
+
#
|
554
|
+
# @return [CreateIndex]
|
555
|
+
def CreateIndex(**args)
|
556
|
+
CreateIndex.new(**args)
|
557
|
+
end
|
558
|
+
|
559
|
+
# Construct {DropIndex} options for {AnalyticsIndexManager#drop_index}
|
560
|
+
#
|
561
|
+
# @return [DropIndex]
|
562
|
+
def DropIndex(**args)
|
563
|
+
DropIndex.new(**args)
|
564
|
+
end
|
565
|
+
|
566
|
+
# Construct {GetAllIndexes} options for {AnalyticsIndexManager#get_all_indexes}
|
567
|
+
#
|
568
|
+
# @return [GetAllIndexes]
|
569
|
+
def GetAllIndexes(**args)
|
570
|
+
GetAllIndexes.new(**args)
|
571
|
+
end
|
572
|
+
|
573
|
+
# Construct {ConnectLink} options for {AnalyticsIndexManager#connect_link}
|
574
|
+
#
|
575
|
+
# @return [ConnectLink]
|
576
|
+
def ConnectLink(**args)
|
577
|
+
ConnectLink.new(**args)
|
578
|
+
end
|
579
|
+
|
580
|
+
# Construct {DisconnectLink} options for {AnalyticsIndexManager#disconnect_link}
|
581
|
+
#
|
582
|
+
# @return [DisconnectLink]
|
583
|
+
def DisconnectLink(**args)
|
584
|
+
DisconnectLink.new(**args)
|
585
|
+
end
|
586
|
+
|
587
|
+
# Construct {GetPendingMutations} options for {AnalyticsIndexManager#get_pending_mutations}
|
588
|
+
#
|
589
|
+
# @return [GetPendingMutations]
|
590
|
+
def GetPendingMutations(**args)
|
591
|
+
GetPendingMutations.new(**args)
|
592
|
+
end
|
593
|
+
|
594
|
+
# Construct {CreateLink} options for {AnalyticsIndexManager#create_link}
|
595
|
+
#
|
596
|
+
# @return [CreateLink]
|
597
|
+
def CreateLink(**args)
|
598
|
+
CreateLink.new(**args)
|
599
|
+
end
|
600
|
+
|
601
|
+
# Construct {ReplaceLink} options for {AnalyticsIndexManager#replace_link}
|
602
|
+
#
|
603
|
+
# @return [ReplaceLink]
|
604
|
+
def ReplaceLink(**args)
|
605
|
+
ReplaceLink.new(**args)
|
606
|
+
end
|
607
|
+
|
608
|
+
# Construct {DropLink} options for {AnalyticsIndexManager#drop_link}
|
609
|
+
#
|
610
|
+
# @return [DropLink]
|
611
|
+
def DropLink(**args)
|
612
|
+
DropLink.new(**args)
|
613
|
+
end
|
614
|
+
|
615
|
+
# Construct {GetLinks} options for {AnalyticsIndexManager#get_links}
|
616
|
+
#
|
617
|
+
# @return [GetLinks]
|
618
|
+
def GetLinks(**args)
|
619
|
+
GetLinks.new(**args)
|
620
|
+
end
|
621
|
+
|
622
|
+
# rubocop:enable Naming/MethodName
|
623
|
+
end
|
624
|
+
end
|
625
|
+
|
626
|
+
class AnalyticsIndexManager
|
627
|
+
alias inspect to_s
|
628
|
+
|
629
|
+
# @param [Couchbase::Backend] backend
|
630
|
+
def initialize(backend)
|
631
|
+
@backend = backend
|
632
|
+
end
|
633
|
+
|
634
|
+
# Creates a new dataverse
|
635
|
+
#
|
636
|
+
# @param [String] dataverse_name
|
637
|
+
# @param [Options::Analytics::CreateDataverse] options
|
638
|
+
#
|
639
|
+
# @return [void]
|
640
|
+
#
|
641
|
+
# @raise [ArgumentError]
|
642
|
+
# @raise [Error::DataverseExists]
|
643
|
+
def create_dataverse(dataverse_name, options = Options::Analytics::CreateDataverse.new)
|
644
|
+
@backend.analytics_dataverse_create(dataverse_name, options.to_backend)
|
645
|
+
end
|
646
|
+
|
647
|
+
# Drops a dataverse
|
648
|
+
#
|
649
|
+
# @param [String] dataverse_name name of the dataverse
|
650
|
+
# @param [Options::Analytics::DropDataverse] options
|
651
|
+
#
|
652
|
+
# @return [void]
|
653
|
+
#
|
654
|
+
# @raise [ArgumentError]
|
655
|
+
# @raise [Error::DataverseNotFound]
|
656
|
+
def drop_dataverse(dataverse_name, options = Options::Analytics::DropDataverse.new)
|
657
|
+
@backend.analytics_dataverse_drop(dataverse_name, options.to_backend)
|
658
|
+
end
|
659
|
+
|
660
|
+
# Creates a new dataset
|
661
|
+
#
|
662
|
+
# @param [String] dataset_name name of dataset
|
663
|
+
# @param [String] bucket_name name of the bucket
|
664
|
+
# @param [Options::Analytics::CreateDataset] options
|
665
|
+
#
|
666
|
+
# @return [void]
|
667
|
+
#
|
668
|
+
# @raise [ArgumentError]
|
669
|
+
# @raise [Error::DatasetExists]
|
670
|
+
# @raise [Error::LinkNotFound]
|
671
|
+
def create_dataset(dataset_name, bucket_name, options = Options::Analytics::CreateDataset.new)
|
672
|
+
@backend.analytics_dataset_create(dataset_name, bucket_name, options.to_backend)
|
673
|
+
end
|
674
|
+
|
675
|
+
# Drops a dataset
|
676
|
+
#
|
677
|
+
# @param [String] dataset_name name of the dataset
|
678
|
+
# @param [Options::Analytics::DropDataset] options
|
679
|
+
#
|
680
|
+
# @return [void]
|
681
|
+
#
|
682
|
+
# @raise [ArgumentError]
|
683
|
+
# @raise [Error::DatasetNotFound]
|
684
|
+
def drop_dataset(dataset_name, options = Options::Analytics::DropDataset.new)
|
685
|
+
@backend.analytics_dataset_drop(dataset_name, options.to_backend)
|
686
|
+
end
|
687
|
+
|
688
|
+
# Gets all datasets
|
689
|
+
#
|
690
|
+
# @param [Options::Analytics::GetAllDatasets] options
|
691
|
+
#
|
692
|
+
# @return [Array<AnalyticsDataset>]
|
693
|
+
def get_all_datasets(options = Options::Analytics::GetAllDatasets.new)
|
694
|
+
resp = @backend.analytics_dataset_get_all(options.to_backend)
|
695
|
+
resp.map do |entry|
|
696
|
+
AnalyticsDataset.new do |dataset|
|
697
|
+
dataset.name = entry[:name]
|
698
|
+
dataset.dataverse_name = entry[:dataverse_name]
|
699
|
+
dataset.link_name = entry[:link_name]
|
700
|
+
dataset.bucket_name = entry[:bucket_name]
|
701
|
+
end
|
702
|
+
end
|
703
|
+
end
|
704
|
+
|
705
|
+
# Creates a new index
|
706
|
+
#
|
707
|
+
# @param [String] index_name name of the index
|
708
|
+
# @param [String] dataset_name name of the dataset
|
709
|
+
# @param [Hash<String => String>] fields mapping of the field name to field type
|
710
|
+
# @param [Options::Analytics::CreateIndex] options
|
711
|
+
#
|
712
|
+
# @return [void]
|
713
|
+
#
|
714
|
+
# @raise [ArgumentError]
|
715
|
+
# @raise [Error::IndexExists]
|
716
|
+
def create_index(index_name, dataset_name, fields, options = Options::Analytics::CreateIndex.new)
|
717
|
+
@backend.analytics_index_create(index_name, dataset_name, fields.entries, options.to_backend)
|
718
|
+
end
|
719
|
+
|
720
|
+
# Drops an index
|
721
|
+
#
|
722
|
+
# @param [String] index_name name of the index
|
723
|
+
# @param [String] dataset_name name of the dataset
|
724
|
+
# @param [Options::Analytics::DropIndex] options
|
725
|
+
#
|
726
|
+
# @return [void]
|
727
|
+
#
|
728
|
+
# @raise [ArgumentError]
|
729
|
+
# @raise [Error::IndexNotFound]
|
730
|
+
def drop_index(index_name, dataset_name, options = Options::Analytics::DropIndex.new)
|
731
|
+
@backend.analytics_index_drop(index_name, dataset_name, options.to_backend)
|
732
|
+
end
|
733
|
+
|
734
|
+
# Gets all indexes
|
735
|
+
#
|
736
|
+
# @param [Options::Analytics::GetAllIndexes] options
|
737
|
+
#
|
738
|
+
# @return [Array<AnalyticsIndex>]
|
739
|
+
def get_all_indexes(options = Options::Analytics::GetAllIndexes.new)
|
740
|
+
resp = @backend.analytics_index_get_all(options.to_backend)
|
741
|
+
resp.map do |entry|
|
742
|
+
AnalyticsIndex.new do |dataset|
|
743
|
+
dataset.name = entry[:name]
|
744
|
+
dataset.dataverse_name = entry[:dataverse_name]
|
745
|
+
dataset.dataset_name = entry[:dataset_name]
|
746
|
+
dataset.is_primary = entry[:is_primary]
|
747
|
+
end
|
748
|
+
end
|
749
|
+
end
|
750
|
+
|
751
|
+
# Connects a link
|
752
|
+
#
|
753
|
+
# @param [Options::Analytics::ConnectLink] options
|
754
|
+
#
|
755
|
+
# @return [void]
|
756
|
+
#
|
757
|
+
# @raise [ArgumentError]
|
758
|
+
# @raise [Error::LinkNotFound]
|
759
|
+
def connect_link(options = Options::Analytics::ConnectLink.new)
|
760
|
+
@backend.analytics_link_connect(options.to_backend)
|
761
|
+
end
|
762
|
+
|
763
|
+
# Disconnects a link,
|
764
|
+
#
|
765
|
+
# @param [Options::Analytics::DisconnectLink] options
|
766
|
+
#
|
767
|
+
# @return [void]
|
768
|
+
#
|
769
|
+
# @raise [ArgumentError]
|
770
|
+
# @raise [Error::LinkNotFound]
|
771
|
+
def disconnect_link(options = Options::Analytics::DisconnectLink.new)
|
772
|
+
@backend.analytics_link_disconnect(options.to_backend)
|
773
|
+
end
|
774
|
+
|
775
|
+
# Gets the pending mutations for all datasets.
|
776
|
+
#
|
777
|
+
# @note If a link is disconnected then it will return no results. If all links are disconnected, then
|
778
|
+
# an empty object is returned.
|
779
|
+
#
|
780
|
+
# @param [Options::Analytics::GetPendingMutations] options
|
781
|
+
#
|
782
|
+
# @return [Hash<String => Integer>] dictionary, where keys are dataset coordinates encoded as +"dataverse.dataset"+
|
783
|
+
# and values are number of mutations for given dataset.
|
784
|
+
def get_pending_mutations(options = Options::Analytics::GetPendingMutations.new)
|
785
|
+
@backend.analytics_get_pending_mutations(options.to_backend)
|
786
|
+
end
|
787
|
+
|
788
|
+
# Creates a link
|
789
|
+
#
|
790
|
+
# @param [CouchbaseRemoteAnalyticsLink, AzureBlobExternalAnalyticsLink, S3ExternalAnalyticsLink] link
|
791
|
+
# @param [Options::Analytics::CreateLink] options
|
792
|
+
#
|
793
|
+
# @return [void]
|
794
|
+
#
|
795
|
+
# @raise [ArgumentError]
|
796
|
+
# @raise [Error::LinkExists]
|
797
|
+
def create_link(link, options = Options::Analytics::CreateLink.new)
|
798
|
+
@backend.analytics_link_create(link.to_backend, options.to_backend)
|
799
|
+
end
|
800
|
+
|
801
|
+
# Replaces the link
|
802
|
+
#
|
803
|
+
# @param [CouchbaseRemoteAnalyticsLink, AzureBlobExternalAnalyticsLink, S3ExternalAnalyticsLink] link
|
804
|
+
# @param [Options::Analytics::ReplaceLink] options
|
805
|
+
#
|
806
|
+
# @return [void]
|
807
|
+
#
|
808
|
+
# @raise [ArgumentError]
|
809
|
+
# @raise [Error::LinkNotFound]
|
810
|
+
def replace_link(link, options = Options::Analytics::ReplaceLink.new)
|
811
|
+
@backend.analytics_link_replace(link.to_backend, options.to_backend)
|
812
|
+
end
|
813
|
+
|
814
|
+
# Drops the link
|
815
|
+
#
|
816
|
+
# @param [String] link_name name of the link
|
817
|
+
# @param [String] dataverse_name dataverse where the link belongs
|
818
|
+
# @param [Options::Analytics::DropLink] options
|
819
|
+
#
|
820
|
+
# @return [void]
|
821
|
+
#
|
822
|
+
# @raise [ArgumentError]
|
823
|
+
# @raise [Error::LinkNotFound]
|
824
|
+
def drop_link(link_name, dataverse_name, options = Options::Analytics::DropLink.new)
|
825
|
+
@backend.analytics_link_drop(link_name, dataverse_name, options.to_backend)
|
826
|
+
end
|
827
|
+
|
828
|
+
# Retrieves the links
|
829
|
+
#
|
830
|
+
# @param [Options::Analytics::GetLinks] options
|
831
|
+
#
|
832
|
+
# @return [void]
|
833
|
+
#
|
834
|
+
# @raise [ArgumentError]
|
835
|
+
# @raise [Error::LinkNotFound]
|
836
|
+
def get_links(options = Options::Analytics::GetLinks.new)
|
837
|
+
resp = @backend.analytics_link_get_all(options.to_backend)
|
838
|
+
resp.map do |entry|
|
839
|
+
case entry[:type]
|
840
|
+
when :s3
|
841
|
+
S3ExternalAnalyticsLink.new(
|
842
|
+
entry[:link_name],
|
843
|
+
entry[:dataverse],
|
844
|
+
entry[:access_key_id],
|
845
|
+
nil,
|
846
|
+
entry[:region],
|
847
|
+
service_endpoint: entry[:service_endpoint]
|
848
|
+
)
|
849
|
+
when :couchbase
|
850
|
+
CouchbaseRemoteAnalyticsLink.new(
|
851
|
+
entry[:link_name],
|
852
|
+
entry[:dataverse],
|
853
|
+
entry[:hostname],
|
854
|
+
username: entry[:username],
|
855
|
+
encryption: EncryptionSettings.new(
|
856
|
+
level: entry[:encryption_level],
|
857
|
+
certificate: entry[:certificate],
|
858
|
+
client_certificate: entry[:client_certificate]
|
859
|
+
)
|
860
|
+
)
|
861
|
+
when :azureblob
|
862
|
+
AzureBlobExternalAnalyticsLink.new(
|
863
|
+
entry[:link_name],
|
864
|
+
entry[:dataverse],
|
865
|
+
account_name: entry[:account_name],
|
866
|
+
blob_endpoint: entry[:blob_endpoint],
|
867
|
+
endpoint_suffix: entry[:endpoint_suffix]
|
868
|
+
)
|
869
|
+
end
|
870
|
+
end
|
871
|
+
end
|
872
|
+
|
873
|
+
# @api private
|
874
|
+
# TODO: deprecate after 3.2
|
875
|
+
CreateDataverseOptions = ::Couchbase::Management::Options::Analytics::CreateDataverse
|
876
|
+
|
877
|
+
# @api private
|
878
|
+
# TODO: deprecate after 3.2
|
879
|
+
DropDataverseOptions = ::Couchbase::Management::Options::Analytics::DropDataverse
|
880
|
+
|
881
|
+
# @api private
|
882
|
+
# TODO: deprecate after 3.2
|
883
|
+
CreateDatasetOptions = ::Couchbase::Management::Options::Analytics::CreateDataset
|
884
|
+
|
885
|
+
# @api private
|
886
|
+
# TODO: deprecate after 3.2
|
887
|
+
DropDatasetOptions = ::Couchbase::Management::Options::Analytics::DropDataset
|
888
|
+
|
889
|
+
# @api private
|
890
|
+
# TODO: deprecate after 3.2
|
891
|
+
GetAllDatasetsOptions = ::Couchbase::Management::Options::Analytics::GetAllDatasets
|
892
|
+
|
893
|
+
# @api private
|
894
|
+
# TODO: deprecate after 3.2
|
895
|
+
CreateIndexOptions = ::Couchbase::Management::Options::Analytics::CreateIndex
|
896
|
+
|
897
|
+
# @api private
|
898
|
+
# TODO: deprecate after 3.2
|
899
|
+
DropIndexOptions = ::Couchbase::Management::Options::Analytics::DropIndex
|
900
|
+
|
901
|
+
# @api private
|
902
|
+
# TODO: deprecate after 3.2
|
903
|
+
GetAllIndexesOptions = ::Couchbase::Management::Options::Analytics::GetAllIndexes
|
904
|
+
|
905
|
+
# @api private
|
906
|
+
# TODO: deprecate after 3.2
|
907
|
+
ConnectLinkOptions = ::Couchbase::Management::Options::Analytics::ConnectLink
|
908
|
+
|
909
|
+
# @api private
|
910
|
+
# TODO: deprecate after 3.2
|
911
|
+
GetPendingMutationsOptions = ::Couchbase::Management::Options::Analytics::GetPendingMutations
|
912
|
+
end
|
913
|
+
|
914
|
+
class AnalyticsDataset
|
915
|
+
# @return [String]
|
916
|
+
attr_accessor :name
|
917
|
+
|
918
|
+
# @return [String]
|
919
|
+
attr_accessor :dataverse_name
|
920
|
+
|
921
|
+
# @return [String]
|
922
|
+
attr_accessor :link_name
|
923
|
+
|
924
|
+
# @return [String]
|
925
|
+
attr_accessor :bucket_name
|
926
|
+
|
927
|
+
# @yieldparam [AnalyticsDataset]
|
928
|
+
def initialize
|
929
|
+
yield self if block_given?
|
930
|
+
end
|
931
|
+
end
|
932
|
+
|
933
|
+
class AnalyticsIndex
|
934
|
+
# @return [String]
|
935
|
+
attr_accessor :name
|
936
|
+
|
937
|
+
# @return [String]
|
938
|
+
attr_accessor :dataset_name
|
939
|
+
|
940
|
+
# @return [String]
|
941
|
+
attr_accessor :dataverse_name
|
942
|
+
|
943
|
+
# @return [Boolean]
|
944
|
+
attr_accessor :is_primary
|
945
|
+
alias primary? is_primary
|
946
|
+
|
947
|
+
# @yieldparam [AnalyticsIndex]
|
948
|
+
def initialize
|
949
|
+
yield self if block_given?
|
950
|
+
end
|
951
|
+
end
|
952
|
+
|
953
|
+
class EncryptionSettings
|
954
|
+
attr_accessor :level # @return [Symbol]
|
955
|
+
attr_accessor :certificate # @return [String, nil]
|
956
|
+
attr_accessor :client_certificate # @return [String, nil]
|
957
|
+
attr_accessor :client_key # @return [String, nil]
|
958
|
+
|
959
|
+
# @param [:none, :half, :full] level Specifies what level of encryption should be used.
|
960
|
+
# @param [String, nil] certificate
|
961
|
+
# @param [String, nil] client_certificate
|
962
|
+
# @param [String, nil] client_key
|
963
|
+
#
|
964
|
+
# @yieldparam [EncryptionSettings] self
|
965
|
+
def initialize(level: :none,
|
966
|
+
certificate: nil,
|
967
|
+
client_certificate: nil,
|
968
|
+
client_key: nil)
|
969
|
+
@level = level
|
970
|
+
@certificate = certificate
|
971
|
+
@client_certificate = client_certificate
|
972
|
+
@client_key = client_key
|
973
|
+
yield self if block_given?
|
974
|
+
end
|
975
|
+
end
|
976
|
+
|
977
|
+
class CouchbaseRemoteAnalyticsLink
|
978
|
+
attr_accessor :name # @return [String]
|
979
|
+
attr_accessor :dataverse # @return [String]
|
980
|
+
attr_accessor :hostname # @return [String]
|
981
|
+
attr_accessor :username # @return [String, nil]
|
982
|
+
attr_accessor :password # @return [String, nil]
|
983
|
+
attr_accessor :encryption # @return [EncryptionSettings]
|
984
|
+
|
985
|
+
# @param [String] name the name of this link
|
986
|
+
# @param [String] dataverse the dataverse this link belongs to
|
987
|
+
# @param [String] hostname the hostname of the target Couchbase cluster
|
988
|
+
# @param [String, nil] username the username to use for authentication with the remote cluster. Optional if
|
989
|
+
# client-certificate authentication is being used.
|
990
|
+
# @param [String, nil] password the password to use for authentication with the remote cluster. Optional if
|
991
|
+
# client-certificate authentication is being used.
|
992
|
+
# @param [EncryptionSettings] encryption settings for connection encryption
|
993
|
+
#
|
994
|
+
# @yieldparam [CouchbaseRemoteLink] self
|
995
|
+
def initialize(name, dataverse, hostname,
|
996
|
+
username: nil,
|
997
|
+
password: nil,
|
998
|
+
encryption: EncryptionSettings.new)
|
999
|
+
@name = name
|
1000
|
+
@dataverse = dataverse
|
1001
|
+
@hostname = hostname
|
1002
|
+
@username = username
|
1003
|
+
@password = password
|
1004
|
+
@encryption = encryption
|
1005
|
+
yield self if block_given?
|
1006
|
+
end
|
1007
|
+
|
1008
|
+
# @api private
|
1009
|
+
def to_backend
|
1010
|
+
{
|
1011
|
+
type: :couchbase,
|
1012
|
+
link_name: @name,
|
1013
|
+
dataverse: @dataverse,
|
1014
|
+
hostname: @hostname,
|
1015
|
+
username: @username,
|
1016
|
+
password: @password,
|
1017
|
+
encryption_level: @encryption.level,
|
1018
|
+
certificate: @encryption.certificate,
|
1019
|
+
client_certificate: @encryption.client_certificate,
|
1020
|
+
client_key: @encryption.client_key,
|
1021
|
+
}
|
1022
|
+
end
|
1023
|
+
end
|
1024
|
+
|
1025
|
+
class AzureBlobExternalAnalyticsLink
|
1026
|
+
attr_accessor :name # @return [String]
|
1027
|
+
attr_accessor :dataverse # @return [String]
|
1028
|
+
attr_accessor :connection_string # @return [String, nil]
|
1029
|
+
attr_accessor :account_name # @return [String, nil]
|
1030
|
+
attr_accessor :account_key # @return [String, nil]
|
1031
|
+
attr_accessor :shared_access_signature # @return [String, nil]
|
1032
|
+
attr_accessor :blob_endpoint # @return [String, nil]
|
1033
|
+
attr_accessor :endpoint_suffix # @return [String, nil]
|
1034
|
+
|
1035
|
+
# @param [String] name the name of this link
|
1036
|
+
# @param [String] dataverse the dataverse this link belongs to
|
1037
|
+
# @param [String, nil] connection_string the connection string can be used as an authentication method,
|
1038
|
+
# +connection_string+ contains other authentication methods embedded inside the string. Only a single
|
1039
|
+
# authentication method can be used. (e.g. "AccountName=myAccountName;AccountKey=myAccountKey").
|
1040
|
+
# @param [String, nil] account_name Azure blob storage account name
|
1041
|
+
# @param [String, nil] account_key Azure blob storage account key
|
1042
|
+
# @param [String, nil] shared_access_signature token that can be used for authentication
|
1043
|
+
# @param [String, nil] blob_endpoint Azure blob storage endpoint
|
1044
|
+
# @param [String, nil] endpoint_suffix Azure blob endpoint suffix
|
1045
|
+
#
|
1046
|
+
# @yieldparam [AzureBlobExternalAnalyticsLink] self
|
1047
|
+
def initialize(name, dataverse,
|
1048
|
+
connection_string: nil,
|
1049
|
+
account_name: nil,
|
1050
|
+
account_key: nil,
|
1051
|
+
shared_access_signature: nil,
|
1052
|
+
blob_endpoint: nil,
|
1053
|
+
endpoint_suffix: nil)
|
1054
|
+
@name = name
|
1055
|
+
@dataverse = dataverse
|
1056
|
+
@connection_string = connection_string
|
1057
|
+
@account_name = account_name
|
1058
|
+
@account_key = account_key
|
1059
|
+
@shared_access_signature = shared_access_signature
|
1060
|
+
@blob_endpoint = blob_endpoint
|
1061
|
+
@endpoint_suffix = endpoint_suffix
|
1062
|
+
yield self if block_given?
|
1063
|
+
end
|
1064
|
+
|
1065
|
+
# @api private
|
1066
|
+
def to_backend
|
1067
|
+
{
|
1068
|
+
type: :azureblob,
|
1069
|
+
link_name: @name,
|
1070
|
+
dataverse: @dataverse,
|
1071
|
+
connection_string: @connection_string,
|
1072
|
+
account_name: @account_name,
|
1073
|
+
account_key: @account_key,
|
1074
|
+
shared_access_signature: @shared_access_signature,
|
1075
|
+
blob_endpoint: @blob_endpoint,
|
1076
|
+
endpoint_suffix: @endpoint_suffix,
|
1077
|
+
}
|
1078
|
+
end
|
1079
|
+
end
|
1080
|
+
|
1081
|
+
class S3ExternalAnalyticsLink
|
1082
|
+
attr_accessor :name # @return [String]
|
1083
|
+
attr_accessor :dataverse # @return [String]
|
1084
|
+
attr_accessor :access_key_id # @return [String]
|
1085
|
+
attr_accessor :secret_access_key # @return [String]
|
1086
|
+
attr_accessor :session_token # @return [String, nil]
|
1087
|
+
attr_accessor :region # @return [String]
|
1088
|
+
attr_accessor :service_endpoint # @return [String, nil]
|
1089
|
+
|
1090
|
+
# @param [String] name the name of this link
|
1091
|
+
# @param [String] dataverse the dataverse this link belongs to
|
1092
|
+
# @param [String] access_key_id AWS S3 access key ID
|
1093
|
+
# @param [String] secret_access_key AWS S3 secret key
|
1094
|
+
# @param [String] region AWS S3 region
|
1095
|
+
# @param [String, nil] session_token AWS S3 token if temporary credentials are provided. Only available in 7.0+
|
1096
|
+
# @param [String, nil] service_endpoint AWS S3 service endpoint
|
1097
|
+
#
|
1098
|
+
# @yieldparam [S3ExternalAnalyticsLink] self
|
1099
|
+
def initialize(name, dataverse, access_key_id, secret_access_key, region,
|
1100
|
+
session_token: nil,
|
1101
|
+
service_endpoint: nil)
|
1102
|
+
@name = name
|
1103
|
+
@dataverse = dataverse
|
1104
|
+
@access_key_id = access_key_id
|
1105
|
+
@secret_access_key = secret_access_key
|
1106
|
+
@session_token = session_token
|
1107
|
+
@region = region
|
1108
|
+
@service_endpoint = service_endpoint
|
1109
|
+
yield self if block_given?
|
1110
|
+
end
|
1111
|
+
|
1112
|
+
# @api private
|
1113
|
+
def to_backend
|
1114
|
+
{
|
1115
|
+
type: :s3,
|
1116
|
+
link_name: @name,
|
1117
|
+
dataverse: @dataverse,
|
1118
|
+
access_key_id: @access_key_id,
|
1119
|
+
secret_access_key: @secret_access_key,
|
1120
|
+
session_token: @session_token,
|
1121
|
+
region: @region,
|
1122
|
+
service_endpoint: @service_endpoint,
|
1123
|
+
}
|
1124
|
+
end
|
1125
|
+
end
|
1126
|
+
end
|
1127
|
+
end
|