couchbase 3.5.3-arm64-darwin
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 +342 -0
- data/lib/couchbase/3.1/libcouchbase.bundle +0 -0
- data/lib/couchbase/3.2/libcouchbase.bundle +0 -0
- data/lib/couchbase/3.3/libcouchbase.bundle +0 -0
- data/lib/couchbase/analytics_options.rb +109 -0
- data/lib/couchbase/authenticator.rb +66 -0
- data/lib/couchbase/binary_collection.rb +130 -0
- data/lib/couchbase/binary_collection_options.rb +26 -0
- data/lib/couchbase/bucket.rb +146 -0
- data/lib/couchbase/cluster.rb +462 -0
- data/lib/couchbase/cluster_registry.rb +49 -0
- data/lib/couchbase/collection.rb +707 -0
- data/lib/couchbase/collection_options.rb +401 -0
- data/lib/couchbase/config_profiles.rb +57 -0
- data/lib/couchbase/configuration.rb +58 -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 +26 -0
- data/lib/couchbase/diagnostics.rb +183 -0
- data/lib/couchbase/errors.rb +414 -0
- data/lib/couchbase/json_transcoder.rb +41 -0
- data/lib/couchbase/key_value_scan.rb +119 -0
- data/lib/couchbase/libcouchbase.rb +6 -0
- data/lib/couchbase/logger.rb +87 -0
- data/lib/couchbase/management/analytics_index_manager.rb +1129 -0
- data/lib/couchbase/management/bucket_manager.rb +445 -0
- data/lib/couchbase/management/collection_manager.rb +472 -0
- data/lib/couchbase/management/collection_query_index_manager.rb +224 -0
- data/lib/couchbase/management/query_index_manager.rb +619 -0
- data/lib/couchbase/management/scope_search_index_manager.rb +200 -0
- data/lib/couchbase/management/search_index_manager.rb +426 -0
- data/lib/couchbase/management/user_manager.rb +470 -0
- data/lib/couchbase/management/view_index_manager.rb +239 -0
- data/lib/couchbase/management.rb +31 -0
- data/lib/couchbase/mutation_state.rb +65 -0
- data/lib/couchbase/options.rb +2846 -0
- data/lib/couchbase/protostellar/binary_collection.rb +55 -0
- data/lib/couchbase/protostellar/bucket.rb +55 -0
- data/lib/couchbase/protostellar/client.rb +99 -0
- data/lib/couchbase/protostellar/cluster.rb +171 -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 +122 -0
- data/lib/couchbase/railtie.rb +47 -0
- data/lib/couchbase/raw_binary_transcoder.rb +39 -0
- data/lib/couchbase/raw_json_transcoder.rb +40 -0
- data/lib/couchbase/raw_string_transcoder.rb +42 -0
- data/lib/couchbase/scope.rb +258 -0
- data/lib/couchbase/search_options.rb +1650 -0
- data/lib/couchbase/subdoc.rb +293 -0
- data/lib/couchbase/transcoder_flags.rb +64 -0
- data/lib/couchbase/utils/generic_logger_adapter.rb +40 -0
- data/lib/couchbase/utils/stdlib_logger_adapter.rb +67 -0
- data/lib/couchbase/utils/time.rb +71 -0
- data/lib/couchbase/utils.rb +23 -0
- data/lib/couchbase/version.rb +25 -0
- data/lib/couchbase/view_options.rb +67 -0
- data/lib/couchbase.rb +30 -0
- data/lib/rails/generators/couchbase/config/config_generator.rb +29 -0
- metadata +190 -0
@@ -0,0 +1,619 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Copyright 2020-2021 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
|
+
require "couchbase/errors"
|
18
|
+
require "couchbase/options"
|
19
|
+
require "couchbase/utils/time"
|
20
|
+
|
21
|
+
module Couchbase
|
22
|
+
module Management
|
23
|
+
module Options
|
24
|
+
module Query
|
25
|
+
# Options for {QueryIndexManager#get_all_indexes}
|
26
|
+
class GetAllIndexes < ::Couchbase::Options::Base
|
27
|
+
attr_accessor :scope_name # @return [String, nil]
|
28
|
+
attr_accessor :collection_name # @return [String, nil]
|
29
|
+
|
30
|
+
# Creates an instance of options for {QueryIndexManager#get_all_indexes}
|
31
|
+
#
|
32
|
+
# @param [String, nil] scope_name the name of the scope
|
33
|
+
# @param [String, nil] collection_name the name of the collection
|
34
|
+
#
|
35
|
+
# @param [Integer, #in_milliseconds, nil] timeout the time in milliseconds allowed for the operation to complete
|
36
|
+
# @param [Proc, nil] retry_strategy the custom retry strategy, if set
|
37
|
+
# @param [Hash, nil] client_context the client context data, if set
|
38
|
+
# @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
|
39
|
+
#
|
40
|
+
# @yieldparam [GetAllScopes] self
|
41
|
+
def initialize(scope_name: nil,
|
42
|
+
collection_name: nil,
|
43
|
+
timeout: nil,
|
44
|
+
retry_strategy: nil,
|
45
|
+
client_context: nil,
|
46
|
+
parent_span: nil)
|
47
|
+
super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
|
48
|
+
@scope_name = scope_name
|
49
|
+
@collection_name = collection_name
|
50
|
+
yield self if block_given?
|
51
|
+
end
|
52
|
+
|
53
|
+
# @api private
|
54
|
+
def to_backend
|
55
|
+
{
|
56
|
+
timeout: Utils::Time.extract_duration(@timeout),
|
57
|
+
scope_name: @scope_name,
|
58
|
+
collection_name: @collection_name,
|
59
|
+
}
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
# Options for {QueryIndexManager#create_index}
|
64
|
+
class CreateIndex < ::Couchbase::Options::Base
|
65
|
+
attr_accessor :ignore_if_exists # @return [Boolean]
|
66
|
+
attr_accessor :num_replicas # @return [Integer, nil]
|
67
|
+
attr_accessor :deferred # @return [Boolean]
|
68
|
+
attr_accessor :condition # @return [String, nil]
|
69
|
+
attr_accessor :scope_name # @return [String, nil]
|
70
|
+
attr_accessor :collection_name # @return [String, nil]
|
71
|
+
|
72
|
+
# Creates an instance of options for {QueryIndexManager#create_index}
|
73
|
+
#
|
74
|
+
# @param [Boolean] ignore_if_exists do not raise error if the index already exist
|
75
|
+
# @param [Integer] num_replicas the number of replicas that this index should have
|
76
|
+
# @param [Boolean] deferred whether the index should be created as a deferred index.
|
77
|
+
# @param [String, nil] condition to apply to the index
|
78
|
+
# @param [String, nil] scope_name the name of the scope
|
79
|
+
# @param [String, nil] collection_name the name of the collection
|
80
|
+
#
|
81
|
+
# @param [Integer, #in_milliseconds, nil] timeout the time in milliseconds allowed for the operation to complete
|
82
|
+
# @param [Proc, nil] retry_strategy the custom retry strategy, if set
|
83
|
+
# @param [Hash, nil] client_context the client context data, if set
|
84
|
+
# @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
|
85
|
+
#
|
86
|
+
# @yieldparam [CreateIndex] self
|
87
|
+
def initialize(ignore_if_exists: false,
|
88
|
+
num_replicas: nil,
|
89
|
+
deferred: false,
|
90
|
+
condition: nil,
|
91
|
+
scope_name: nil,
|
92
|
+
collection_name: nil,
|
93
|
+
timeout: nil,
|
94
|
+
retry_strategy: nil,
|
95
|
+
client_context: nil,
|
96
|
+
parent_span: nil)
|
97
|
+
super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
|
98
|
+
@ignore_if_exists = ignore_if_exists
|
99
|
+
@num_replicas = num_replicas
|
100
|
+
@deferred = deferred
|
101
|
+
@condition = condition
|
102
|
+
@scope_name = scope_name
|
103
|
+
@collection_name = collection_name
|
104
|
+
yield self if block_given?
|
105
|
+
end
|
106
|
+
|
107
|
+
# @api private
|
108
|
+
def to_backend
|
109
|
+
{
|
110
|
+
timeout: Utils::Time.extract_duration(@timeout),
|
111
|
+
ignore_if_exists: @ignore_if_exists,
|
112
|
+
condition: @condition,
|
113
|
+
deferred: @deferred,
|
114
|
+
num_replicas: @num_replicas,
|
115
|
+
scope_name: @scope_name,
|
116
|
+
collection_name: @collection_name,
|
117
|
+
}
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
# Options for {QueryIndexManager#create_primary_index}
|
122
|
+
class CreatePrimaryIndex < ::Couchbase::Options::Base
|
123
|
+
attr_accessor :ignore_if_exists # @return [Boolean]
|
124
|
+
attr_accessor :num_replicas # @return [Integer, nil]
|
125
|
+
attr_accessor :deferred # @return [Boolean]
|
126
|
+
attr_accessor :index_name # @return [String. nil]
|
127
|
+
attr_accessor :scope_name # @return [String, nil]
|
128
|
+
attr_accessor :collection_name # @return [String, nil]
|
129
|
+
|
130
|
+
# Creates an instance of options for {QueryIndexManager#create_primary_index}
|
131
|
+
#
|
132
|
+
# @param [Boolean] ignore_if_exists do not raise error if the index already exist
|
133
|
+
# @param [Integer] num_replicas the number of replicas that this index should have
|
134
|
+
# @param [Boolean] deferred whether the index should be created as a deferred index.
|
135
|
+
# @param [String, nil] index_name the custom name of the primary index.
|
136
|
+
# @param [String, nil] scope_name the name of the scope
|
137
|
+
# @param [String, nil] collection_name the name of the collection
|
138
|
+
#
|
139
|
+
# @param [Integer, #in_milliseconds, nil] timeout the time in milliseconds allowed for the operation to complete
|
140
|
+
# @param [Proc, nil] retry_strategy the custom retry strategy, if set
|
141
|
+
# @param [Hash, nil] client_context the client context data, if set
|
142
|
+
# @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
|
143
|
+
#
|
144
|
+
# @yieldparam [CreatePrimaryIndex] self
|
145
|
+
def initialize(ignore_if_exists: false,
|
146
|
+
num_replicas: nil,
|
147
|
+
deferred: false,
|
148
|
+
index_name: nil,
|
149
|
+
scope_name: nil,
|
150
|
+
collection_name: nil,
|
151
|
+
timeout: nil,
|
152
|
+
retry_strategy: nil,
|
153
|
+
client_context: nil,
|
154
|
+
parent_span: nil)
|
155
|
+
super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
|
156
|
+
@ignore_if_exists = ignore_if_exists
|
157
|
+
@num_replicas = num_replicas
|
158
|
+
@deferred = deferred
|
159
|
+
@index_name = index_name
|
160
|
+
@scope_name = scope_name
|
161
|
+
@collection_name = collection_name
|
162
|
+
yield self if block_given?
|
163
|
+
end
|
164
|
+
|
165
|
+
# @api private
|
166
|
+
def to_backend
|
167
|
+
{
|
168
|
+
timeout: Utils::Time.extract_duration(@timeout),
|
169
|
+
ignore_if_exists: @ignore_if_exists,
|
170
|
+
deferred: @deferred,
|
171
|
+
num_replicas: @num_replicas,
|
172
|
+
index_name: @index_name,
|
173
|
+
scope_name: @scope_name,
|
174
|
+
collection_name: @collection_name,
|
175
|
+
}
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
179
|
+
# Options for {QueryIndexManager#drop_index}
|
180
|
+
class DropIndex < ::Couchbase::Options::Base
|
181
|
+
attr_accessor :ignore_if_does_not_exist # @return [Boolean]
|
182
|
+
attr_accessor :scope_name # @return [String, nil]
|
183
|
+
attr_accessor :collection_name # @return [String, nil]
|
184
|
+
|
185
|
+
# Creates an instance of options for {QueryIndexManager#drop_index}
|
186
|
+
#
|
187
|
+
# @param [Boolean] ignore_if_does_not_exist do not raise error if the index does not exist
|
188
|
+
# @param [String, nil] scope_name the name of the scope
|
189
|
+
# @param [String, nil] collection_name the name of the collection
|
190
|
+
#
|
191
|
+
# @param [Integer, #in_milliseconds, nil] timeout the time in milliseconds allowed for the operation to complete
|
192
|
+
# @param [Proc, nil] retry_strategy the custom retry strategy, if set
|
193
|
+
# @param [Hash, nil] client_context the client context data, if set
|
194
|
+
# @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
|
195
|
+
#
|
196
|
+
# @yieldparam [DropIndex] self
|
197
|
+
def initialize(ignore_if_does_not_exist: false,
|
198
|
+
scope_name: nil,
|
199
|
+
collection_name: nil,
|
200
|
+
timeout: nil,
|
201
|
+
retry_strategy: nil,
|
202
|
+
client_context: nil,
|
203
|
+
parent_span: nil)
|
204
|
+
super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
|
205
|
+
@ignore_if_does_not_exist = ignore_if_does_not_exist
|
206
|
+
@scope_name = scope_name
|
207
|
+
@collection_name = collection_name
|
208
|
+
yield self if block_given?
|
209
|
+
end
|
210
|
+
|
211
|
+
# @api private
|
212
|
+
def to_backend
|
213
|
+
{
|
214
|
+
timeout: Utils::Time.extract_duration(@timeout),
|
215
|
+
ignore_if_does_not_exist: @ignore_if_does_not_exist,
|
216
|
+
scope_name: @scope_name,
|
217
|
+
collection_name: @collection_name,
|
218
|
+
}
|
219
|
+
end
|
220
|
+
end
|
221
|
+
|
222
|
+
# Options for {QueryIndexManager#drop_primary_index}
|
223
|
+
class DropPrimaryIndex < ::Couchbase::Options::Base
|
224
|
+
attr_accessor :ignore_if_does_not_exist # @return [Boolean]
|
225
|
+
attr_accessor :scope_name # @return [String, nil]
|
226
|
+
attr_accessor :collection_name # @return [String, nil]
|
227
|
+
|
228
|
+
# Creates an instance of options for {QueryIndexManager#drop_primary_index}
|
229
|
+
#
|
230
|
+
# @param [Boolean] ignore_if_does_not_exist do not raise error if the index does not exist
|
231
|
+
# @param [String, nil] scope_name the name of the scope
|
232
|
+
# @param [String, nil] collection_name the name of the collection
|
233
|
+
#
|
234
|
+
# @param [Integer, #in_milliseconds, nil] timeout the time in milliseconds allowed for the operation to complete
|
235
|
+
# @param [Proc, nil] retry_strategy the custom retry strategy, if set
|
236
|
+
# @param [Hash, nil] client_context the client context data, if set
|
237
|
+
# @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
|
238
|
+
#
|
239
|
+
# @yieldparam [DropPrimaryIndex] self
|
240
|
+
def initialize(ignore_if_does_not_exist: false,
|
241
|
+
scope_name: nil,
|
242
|
+
collection_name: nil,
|
243
|
+
timeout: nil,
|
244
|
+
retry_strategy: nil,
|
245
|
+
client_context: nil,
|
246
|
+
parent_span: nil)
|
247
|
+
super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
|
248
|
+
@ignore_if_does_not_exist = ignore_if_does_not_exist
|
249
|
+
@scope_name = scope_name
|
250
|
+
@collection_name = collection_name
|
251
|
+
yield self if block_given?
|
252
|
+
end
|
253
|
+
|
254
|
+
# @api private
|
255
|
+
def to_backend
|
256
|
+
{
|
257
|
+
timeout: Utils::Time.extract_duration(@timeout),
|
258
|
+
ignore_if_does_not_exist: @ignore_if_does_not_exist,
|
259
|
+
scope_name: @scope_name,
|
260
|
+
collection_name: @collection_name,
|
261
|
+
}
|
262
|
+
end
|
263
|
+
end
|
264
|
+
|
265
|
+
# Options for {QueryIndexManager#build_deferred_indexes}
|
266
|
+
class BuildDeferredIndexes < ::Couchbase::Options::Base
|
267
|
+
attr_accessor :scope_name # @return [String, nil]
|
268
|
+
attr_accessor :collection_name # @return [String, nil]
|
269
|
+
|
270
|
+
# Creates an instance of options for {QueryIndexManager#build_deferred_indexes}
|
271
|
+
# @param [String, nil] scope_name the name of the scope
|
272
|
+
# @param [String, nil] collection_name the name of the collection
|
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 [GetAllScopes] self
|
280
|
+
def initialize(scope_name: nil,
|
281
|
+
collection_name: nil,
|
282
|
+
timeout: nil,
|
283
|
+
retry_strategy: nil,
|
284
|
+
client_context: nil,
|
285
|
+
parent_span: nil)
|
286
|
+
super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
|
287
|
+
@scope_name = scope_name
|
288
|
+
@collection_name = collection_name
|
289
|
+
yield self if block_given?
|
290
|
+
end
|
291
|
+
|
292
|
+
# @api private
|
293
|
+
def to_backend
|
294
|
+
{
|
295
|
+
timeout: Utils::Time.extract_duration(@timeout),
|
296
|
+
scope_name: @scope_name,
|
297
|
+
collection_name: @collection_name,
|
298
|
+
}
|
299
|
+
end
|
300
|
+
end
|
301
|
+
|
302
|
+
# Options for {QueryIndexManager#watch_indexes}
|
303
|
+
class WatchIndexes < ::Couchbase::Options::Base
|
304
|
+
attr_accessor :watch_primary # @return [Boolean]
|
305
|
+
attr_accessor :scope_name # @return [String, nil]
|
306
|
+
attr_accessor :collection_name # @return [String, nil]
|
307
|
+
|
308
|
+
# Creates an instance of options for {QueryIndexManager#watch_indexes}
|
309
|
+
#
|
310
|
+
# @param [Boolean] watch_primary whether or not to watch the primary index
|
311
|
+
# @param [String, nil] scope_name the name of the scope
|
312
|
+
# @param [String, nil] collection_name the name of the collection
|
313
|
+
#
|
314
|
+
# @param [Proc, nil] retry_strategy the custom retry strategy, if set
|
315
|
+
# @param [Hash, nil] client_context the client context data, if set
|
316
|
+
# @param [Span, nil] parent_span if set holds the parent span, that should be used for this request
|
317
|
+
#
|
318
|
+
# @yieldparam [GetAllScopes] self
|
319
|
+
def initialize(watch_primary: false,
|
320
|
+
scope_name: nil,
|
321
|
+
collection_name: nil,
|
322
|
+
retry_strategy: nil,
|
323
|
+
client_context: nil,
|
324
|
+
parent_span: nil)
|
325
|
+
super(timeout: nil, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
|
326
|
+
@watch_primary = watch_primary
|
327
|
+
@scope_name = scope_name
|
328
|
+
@collection_name = collection_name
|
329
|
+
yield self if block_given?
|
330
|
+
end
|
331
|
+
|
332
|
+
# @api private
|
333
|
+
def to_backend
|
334
|
+
{
|
335
|
+
watch_primary: @watch_primary,
|
336
|
+
scope_name: @scope_name,
|
337
|
+
collection_name: @collection_name,
|
338
|
+
}
|
339
|
+
end
|
340
|
+
end
|
341
|
+
|
342
|
+
# rubocop:disable Naming/MethodName constructor shortcuts
|
343
|
+
module_function
|
344
|
+
|
345
|
+
# Construct {GetAllIndexes} options for {QueryIndexManager#get_all_indexes}
|
346
|
+
#
|
347
|
+
# @return [GetAllIndexes]
|
348
|
+
def GetAllIndexes(**args)
|
349
|
+
GetAllIndexes.new(**args)
|
350
|
+
end
|
351
|
+
|
352
|
+
# Construct {CreateIndex} options for {QueryIndexManager#create_index}
|
353
|
+
#
|
354
|
+
# @return [CreateIndex]
|
355
|
+
def CreateIndex(**args)
|
356
|
+
CreateIndex.new(**args)
|
357
|
+
end
|
358
|
+
|
359
|
+
# Construct {CreatePrimaryIndex} options for {QueryIndexManager#create_index}
|
360
|
+
#
|
361
|
+
# @return [CreatePrimaryIndex]
|
362
|
+
def CreatePrimaryIndex(**args)
|
363
|
+
CreatePrimaryIndex.new(**args)
|
364
|
+
end
|
365
|
+
|
366
|
+
# Construct {DropIndex} options for {QueryIndexManager#drop_index}
|
367
|
+
#
|
368
|
+
# @return [DropIndex]
|
369
|
+
def DropIndex(**args)
|
370
|
+
DropIndex.new(**args)
|
371
|
+
end
|
372
|
+
|
373
|
+
# Construct {DropPrimaryIndex} options for {QueryIndexManager#drop_primary_index}
|
374
|
+
#
|
375
|
+
# @return [DropPrimaryIndex]
|
376
|
+
def DropPrimaryIndex(**args)
|
377
|
+
DropPrimaryIndex.new(**args)
|
378
|
+
end
|
379
|
+
|
380
|
+
# rubocop:enable Naming/MethodName
|
381
|
+
end
|
382
|
+
end
|
383
|
+
|
384
|
+
class QueryIndexManager
|
385
|
+
alias inspect to_s
|
386
|
+
|
387
|
+
# @param [Couchbase::Backend] backend
|
388
|
+
def initialize(backend)
|
389
|
+
@backend = backend
|
390
|
+
end
|
391
|
+
|
392
|
+
# Fetches all indexes from the server
|
393
|
+
#
|
394
|
+
# @param [String] bucket_name name of the bucket
|
395
|
+
# @param [Options::Query::GetAllIndexes] options
|
396
|
+
#
|
397
|
+
# @return [Array<QueryIndex>]
|
398
|
+
#
|
399
|
+
# @raise [ArgumentError]
|
400
|
+
def get_all_indexes(bucket_name, options = GetAllIndexOptions.new)
|
401
|
+
unless options.scope_name.nil? && options.collection_name.nil?
|
402
|
+
warn "The attributes 'scope_name' and 'collection_name' have been deprecated. Use 'collection.query_indexes' instead"
|
403
|
+
end
|
404
|
+
|
405
|
+
res = @backend.query_index_get_all(bucket_name, options.to_backend)
|
406
|
+
res[:indexes].map do |idx|
|
407
|
+
QueryIndex.new do |index|
|
408
|
+
index.name = idx[:name]
|
409
|
+
index.is_primary = idx[:is_primary]
|
410
|
+
index.type = idx[:type]
|
411
|
+
index.state = idx[:state]
|
412
|
+
index.bucket = idx[:bucket_name]
|
413
|
+
index.scope = idx[:scope_name]
|
414
|
+
index.collection = idx[:collection_name]
|
415
|
+
index.index_key = idx[:index_key]
|
416
|
+
index.condition = idx[:condition]
|
417
|
+
index.partition = idx[:partition]
|
418
|
+
end
|
419
|
+
end
|
420
|
+
end
|
421
|
+
|
422
|
+
# Creates a new index
|
423
|
+
#
|
424
|
+
# @param [String] bucket_name name of the bucket
|
425
|
+
# @param [String] index_name name of the index
|
426
|
+
# @param [Array<String>] fields the lists of fields to create th index over
|
427
|
+
# @param [Options::Query::CreateIndex] options
|
428
|
+
#
|
429
|
+
# @return void
|
430
|
+
#
|
431
|
+
# @raise [ArgumentError]
|
432
|
+
# @raise [Error::IndexExists]
|
433
|
+
def create_index(bucket_name, index_name, fields, options = Options::Query::CreateIndex.new)
|
434
|
+
unless options.scope_name.nil? && options.collection_name.nil?
|
435
|
+
warn "The attributes 'scope_name' and 'collection_name' have been deprecated. Use 'collection.query_indexes' instead"
|
436
|
+
end
|
437
|
+
|
438
|
+
@backend.query_index_create(bucket_name, index_name, fields, options.to_backend)
|
439
|
+
end
|
440
|
+
|
441
|
+
# Creates new primary index
|
442
|
+
#
|
443
|
+
# @param [String] bucket_name name of the bucket
|
444
|
+
# @param [Options::Query::CreatePrimaryIndex] options
|
445
|
+
#
|
446
|
+
# @return void
|
447
|
+
#
|
448
|
+
# @raise [ArgumentError]
|
449
|
+
# @raise [Error::IndexExists]
|
450
|
+
def create_primary_index(bucket_name, options = Options::Query::CreatePrimaryIndex.new)
|
451
|
+
unless options.scope_name.nil? && options.collection_name.nil?
|
452
|
+
warn "The attributes 'scope_name' and 'collection_name' have been deprecated. Use 'collection.query_indexes' instead"
|
453
|
+
end
|
454
|
+
|
455
|
+
@backend.query_index_create_primary(bucket_name, options.to_backend)
|
456
|
+
end
|
457
|
+
|
458
|
+
# Drops the index
|
459
|
+
#
|
460
|
+
# @param [String] bucket_name name of the bucket
|
461
|
+
# @param [String] index_name name of the index
|
462
|
+
# @param [Options::Query::DropIndex] options
|
463
|
+
#
|
464
|
+
# @return void
|
465
|
+
#
|
466
|
+
# @raise [ArgumentError]
|
467
|
+
# @raise [Error::IndexNotFound]
|
468
|
+
def drop_index(bucket_name, index_name, options = Options::Query::DropIndex.new)
|
469
|
+
unless options.scope_name.nil? && options.collection_name.nil?
|
470
|
+
warn "The attributes 'scope_name' and 'collection_name' have been deprecated. Use 'collection.query_indexes' instead"
|
471
|
+
end
|
472
|
+
|
473
|
+
@backend.query_index_drop(bucket_name, index_name, options.to_backend)
|
474
|
+
end
|
475
|
+
|
476
|
+
# Drops the primary index
|
477
|
+
#
|
478
|
+
# @param [String] bucket_name name of the bucket
|
479
|
+
# @param [Options::Query::DropPrimaryIndex] options
|
480
|
+
#
|
481
|
+
# @return void
|
482
|
+
#
|
483
|
+
# @raise [ArgumentError]
|
484
|
+
# @raise [Error::IndexNotFound]
|
485
|
+
def drop_primary_index(bucket_name, options = Options::Query::DropPrimaryIndex.new)
|
486
|
+
unless options.scope_name.nil? && options.collection_name.nil?
|
487
|
+
warn "The attributes 'scope_name' and 'collection_name' have been deprecated. Use 'collection.query_indexes' instead"
|
488
|
+
end
|
489
|
+
|
490
|
+
@backend.query_index_drop_primary(bucket_name, options.to_backend)
|
491
|
+
end
|
492
|
+
|
493
|
+
# Build all indexes which are currently in deferred state
|
494
|
+
#
|
495
|
+
# @param [String] bucket_name name of the bucket
|
496
|
+
# @param [Options::Query::BuildDeferredIndexes] options
|
497
|
+
#
|
498
|
+
# @return
|
499
|
+
#
|
500
|
+
# @raise [ArgumentError]
|
501
|
+
def build_deferred_indexes(bucket_name, options = Options::Query::BuildDeferredIndexes.new)
|
502
|
+
unless options.scope_name.nil? && options.collection_name.nil?
|
503
|
+
warn "The attributes 'scope_name' and 'collection_name' have been deprecated. Use 'collection.query_indexes' instead"
|
504
|
+
end
|
505
|
+
|
506
|
+
@backend.query_index_build_deferred(bucket_name, options.to_backend)
|
507
|
+
end
|
508
|
+
|
509
|
+
# Polls indexes until they are online
|
510
|
+
#
|
511
|
+
# @param [String] bucket_name name of the bucket
|
512
|
+
# @param [Array<String>] index_names names of the indexes to watch
|
513
|
+
# @param [Integer, #in_milliseconds] timeout the time in milliseconds allowed for the operation to complete
|
514
|
+
# @param [Options::Query::WatchIndexes] options
|
515
|
+
#
|
516
|
+
# @raise [ArgumentError]
|
517
|
+
# @raise [Error::IndexNotFound]
|
518
|
+
def watch_indexes(bucket_name, index_names, timeout, options = Options::Query::WatchIndexes.new)
|
519
|
+
unless options.scope_name.nil? && options.collection_name.nil?
|
520
|
+
warn "The attributes 'scope_name' and 'collection_name' have been deprecated. Use 'collection.query_indexes' instead"
|
521
|
+
end
|
522
|
+
|
523
|
+
index_names.append("#primary") if options.watch_primary
|
524
|
+
|
525
|
+
interval_millis = 50
|
526
|
+
deadline = Time.now + (Utils::Time.extract_duration(timeout) * 0.001)
|
527
|
+
while Time.now <= deadline
|
528
|
+
get_all_opts = Options::Query::GetAllIndexes.new(timeout: ((deadline - Time.now) * 1000).round)
|
529
|
+
indexes = get_all_indexes(bucket_name, get_all_opts).select { |idx| index_names.include? idx.name }
|
530
|
+
indexes_not_found = index_names - indexes.map(&:name)
|
531
|
+
raise Error::IndexNotFound, "Failed to find the indexes: #{indexes_not_found.join(', ')}" unless indexes_not_found.empty?
|
532
|
+
|
533
|
+
all_online = indexes.all? { |idx| idx.state == :online }
|
534
|
+
return if all_online
|
535
|
+
|
536
|
+
sleep(interval_millis / 1000)
|
537
|
+
interval_millis += 500
|
538
|
+
interval_millis = 1000 if interval_millis > 1000
|
539
|
+
end
|
540
|
+
raise Error::UnambiguousTimeout, "Failed to find all indexes online within the allotted time"
|
541
|
+
end
|
542
|
+
|
543
|
+
# @api private
|
544
|
+
# TODO: deprecate after 3.2
|
545
|
+
GetAllIndexOptions = ::Couchbase::Management::Options::Query::GetAllIndexes
|
546
|
+
|
547
|
+
# @api private
|
548
|
+
# TODO: deprecate after 3.2
|
549
|
+
CreateIndexOptions = ::Couchbase::Management::Options::Query::CreateIndex
|
550
|
+
|
551
|
+
# @api private
|
552
|
+
# TODO: deprecate after 3.2
|
553
|
+
CreatePrimaryIndexOptions = ::Couchbase::Management::Options::Query::CreatePrimaryIndex
|
554
|
+
|
555
|
+
# @api private
|
556
|
+
# TODO: deprecate after 3.2
|
557
|
+
DropIndexOptions = ::Couchbase::Management::Options::Query::DropIndex
|
558
|
+
|
559
|
+
# @api private
|
560
|
+
# TODO: deprecate after 3.2
|
561
|
+
DropPrimaryIndexOptions = ::Couchbase::Management::Options::Query::DropPrimaryIndex
|
562
|
+
|
563
|
+
# @api private
|
564
|
+
# TODO: deprecate after 3.2
|
565
|
+
BuildDeferredIndexOptions = ::Couchbase::Management::Options::Query::BuildDeferredIndexes
|
566
|
+
|
567
|
+
# @api private
|
568
|
+
# TODO: deprecate after 3.2
|
569
|
+
WatchIndexesOptions = ::Couchbase::Management::Options::Query::WatchIndexes
|
570
|
+
end
|
571
|
+
|
572
|
+
class QueryIndex
|
573
|
+
# @return [String] name of the index
|
574
|
+
attr_accessor :name
|
575
|
+
|
576
|
+
# @return [Boolean] true if this is a primary index
|
577
|
+
attr_accessor :is_primary
|
578
|
+
alias primary? is_primary
|
579
|
+
|
580
|
+
# @return [:gsi, :view] type of the index
|
581
|
+
attr_accessor :type
|
582
|
+
|
583
|
+
# @return [Symbol] state
|
584
|
+
attr_accessor :state
|
585
|
+
|
586
|
+
# @return [String, nil] the name of the bucket
|
587
|
+
attr_accessor :bucket
|
588
|
+
|
589
|
+
# @return [String, nil] the name of the scope
|
590
|
+
attr_accessor :scope
|
591
|
+
|
592
|
+
# @return [String, nil] the name of the collection
|
593
|
+
attr_accessor :collection
|
594
|
+
|
595
|
+
# @return [Array<String>] an array of Strings that represent the index key(s). The array is empty in the case of a
|
596
|
+
# PRIMARY INDEX.
|
597
|
+
#
|
598
|
+
# @note the query service can present the key in a slightly different manner from when you declared the index: for
|
599
|
+
# instance, it will show the indexed fields in an escaped format (surrounded by backticks).
|
600
|
+
attr_accessor :index_key
|
601
|
+
|
602
|
+
# @return [String] the string representation of the index's condition (the WHERE clause of the index),
|
603
|
+
# or an empty Optional if no condition was set.
|
604
|
+
#
|
605
|
+
# @note that the query service can present the condition in a slightly different manner from when you declared the
|
606
|
+
# index. For instance it will wrap expressions with parentheses and show the fields in an escaped format
|
607
|
+
# (surrounded by backticks).
|
608
|
+
attr_accessor :condition
|
609
|
+
|
610
|
+
# @return [String] the string representation of the index's partition
|
611
|
+
attr_accessor :partition
|
612
|
+
|
613
|
+
# @yieldparam [QueryIndex] self
|
614
|
+
def initialize
|
615
|
+
yield self if block_given?
|
616
|
+
end
|
617
|
+
end
|
618
|
+
end
|
619
|
+
end
|