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.
Files changed (125) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +202 -0
  3. data/README.md +154 -0
  4. data/ext/extconf.rb +0 -0
  5. data/lib/active_support/cache/couchbase_store.rb +339 -0
  6. data/lib/couchbase/3.1/libcouchbase.so +0 -0
  7. data/lib/couchbase/3.2/libcouchbase.so +0 -0
  8. data/lib/couchbase/3.3/libcouchbase.so +0 -0
  9. data/lib/couchbase/analytics_options.rb +107 -0
  10. data/lib/couchbase/authenticator.rb +64 -0
  11. data/lib/couchbase/binary_collection.rb +128 -0
  12. data/lib/couchbase/binary_collection_options.rb +24 -0
  13. data/lib/couchbase/bucket.rb +144 -0
  14. data/lib/couchbase/cluster.rb +460 -0
  15. data/lib/couchbase/cluster_registry.rb +49 -0
  16. data/lib/couchbase/collection.rb +705 -0
  17. data/lib/couchbase/collection_options.rb +399 -0
  18. data/lib/couchbase/config_profiles.rb +55 -0
  19. data/lib/couchbase/configuration.rb +56 -0
  20. data/lib/couchbase/datastructures/couchbase_list.rb +160 -0
  21. data/lib/couchbase/datastructures/couchbase_map.rb +194 -0
  22. data/lib/couchbase/datastructures/couchbase_queue.rb +134 -0
  23. data/lib/couchbase/datastructures/couchbase_set.rb +128 -0
  24. data/lib/couchbase/datastructures.rb +24 -0
  25. data/lib/couchbase/diagnostics.rb +181 -0
  26. data/lib/couchbase/errors.rb +376 -0
  27. data/lib/couchbase/json_transcoder.rb +39 -0
  28. data/lib/couchbase/key_value_scan.rb +117 -0
  29. data/lib/couchbase/libcouchbase.rb +6 -0
  30. data/lib/couchbase/logger.rb +85 -0
  31. data/lib/couchbase/management/analytics_index_manager.rb +1127 -0
  32. data/lib/couchbase/management/bucket_manager.rb +443 -0
  33. data/lib/couchbase/management/collection_manager.rb +470 -0
  34. data/lib/couchbase/management/collection_query_index_manager.rb +222 -0
  35. data/lib/couchbase/management/query_index_manager.rb +617 -0
  36. data/lib/couchbase/management/scope_search_index_manager.rb +198 -0
  37. data/lib/couchbase/management/search_index_manager.rb +424 -0
  38. data/lib/couchbase/management/user_manager.rb +468 -0
  39. data/lib/couchbase/management/view_index_manager.rb +237 -0
  40. data/lib/couchbase/management.rb +29 -0
  41. data/lib/couchbase/mutation_state.rb +63 -0
  42. data/lib/couchbase/options.rb +2837 -0
  43. data/lib/couchbase/protostellar/binary_collection.rb +55 -0
  44. data/lib/couchbase/protostellar/bucket.rb +51 -0
  45. data/lib/couchbase/protostellar/client.rb +99 -0
  46. data/lib/couchbase/protostellar/cluster.rb +163 -0
  47. data/lib/couchbase/protostellar/collection.rb +152 -0
  48. data/lib/couchbase/protostellar/connect_options.rb +63 -0
  49. data/lib/couchbase/protostellar/error_handling.rb +203 -0
  50. data/lib/couchbase/protostellar/generated/admin/bucket/v1/bucket_pb.rb +61 -0
  51. data/lib/couchbase/protostellar/generated/admin/bucket/v1/bucket_services_pb.rb +35 -0
  52. data/lib/couchbase/protostellar/generated/admin/collection/v1/collection_pb.rb +57 -0
  53. data/lib/couchbase/protostellar/generated/admin/collection/v1/collection_services_pb.rb +36 -0
  54. data/lib/couchbase/protostellar/generated/admin/query/v1/query_pb.rb +61 -0
  55. data/lib/couchbase/protostellar/generated/admin/query/v1/query_services_pb.rb +37 -0
  56. data/lib/couchbase/protostellar/generated/admin/search/v1/search_pb.rb +72 -0
  57. data/lib/couchbase/protostellar/generated/admin/search/v1/search_services_pb.rb +44 -0
  58. data/lib/couchbase/protostellar/generated/analytics/v1/analytics_pb.rb +52 -0
  59. data/lib/couchbase/protostellar/generated/analytics/v1/analytics_services_pb.rb +30 -0
  60. data/lib/couchbase/protostellar/generated/internal/hooks/v1/hooks_pb.rb +70 -0
  61. data/lib/couchbase/protostellar/generated/internal/hooks/v1/hooks_services_pb.rb +36 -0
  62. data/lib/couchbase/protostellar/generated/kv/v1/kv_pb.rb +97 -0
  63. data/lib/couchbase/protostellar/generated/kv/v1/kv_services_pb.rb +46 -0
  64. data/lib/couchbase/protostellar/generated/query/v1/query_pb.rb +57 -0
  65. data/lib/couchbase/protostellar/generated/query/v1/query_services_pb.rb +30 -0
  66. data/lib/couchbase/protostellar/generated/routing/v1/routing_pb.rb +52 -0
  67. data/lib/couchbase/protostellar/generated/routing/v1/routing_services_pb.rb +30 -0
  68. data/lib/couchbase/protostellar/generated/search/v1/search_pb.rb +99 -0
  69. data/lib/couchbase/protostellar/generated/search/v1/search_services_pb.rb +30 -0
  70. data/lib/couchbase/protostellar/generated/transactions/v1/transactions_pb.rb +57 -0
  71. data/lib/couchbase/protostellar/generated/transactions/v1/transactions_services_pb.rb +36 -0
  72. data/lib/couchbase/protostellar/generated/view/v1/view_pb.rb +51 -0
  73. data/lib/couchbase/protostellar/generated/view/v1/view_services_pb.rb +30 -0
  74. data/lib/couchbase/protostellar/generated.rb +9 -0
  75. data/lib/couchbase/protostellar/management/bucket_manager.rb +67 -0
  76. data/lib/couchbase/protostellar/management/collection_manager.rb +94 -0
  77. data/lib/couchbase/protostellar/management/collection_query_index_manager.rb +124 -0
  78. data/lib/couchbase/protostellar/management/query_index_manager.rb +112 -0
  79. data/lib/couchbase/protostellar/management.rb +24 -0
  80. data/lib/couchbase/protostellar/request.rb +78 -0
  81. data/lib/couchbase/protostellar/request_behaviour.rb +42 -0
  82. data/lib/couchbase/protostellar/request_generator/admin/bucket.rb +124 -0
  83. data/lib/couchbase/protostellar/request_generator/admin/collection.rb +94 -0
  84. data/lib/couchbase/protostellar/request_generator/admin/query.rb +130 -0
  85. data/lib/couchbase/protostellar/request_generator/admin.rb +24 -0
  86. data/lib/couchbase/protostellar/request_generator/kv.rb +474 -0
  87. data/lib/couchbase/protostellar/request_generator/query.rb +133 -0
  88. data/lib/couchbase/protostellar/request_generator/search.rb +387 -0
  89. data/lib/couchbase/protostellar/request_generator.rb +26 -0
  90. data/lib/couchbase/protostellar/response_converter/admin/bucket.rb +55 -0
  91. data/lib/couchbase/protostellar/response_converter/admin/collection.rb +42 -0
  92. data/lib/couchbase/protostellar/response_converter/admin/query.rb +59 -0
  93. data/lib/couchbase/protostellar/response_converter/admin.rb +24 -0
  94. data/lib/couchbase/protostellar/response_converter/kv.rb +151 -0
  95. data/lib/couchbase/protostellar/response_converter/query.rb +84 -0
  96. data/lib/couchbase/protostellar/response_converter/search.rb +136 -0
  97. data/lib/couchbase/protostellar/response_converter.rb +26 -0
  98. data/lib/couchbase/protostellar/retry/action.rb +38 -0
  99. data/lib/couchbase/protostellar/retry/orchestrator.rb +60 -0
  100. data/lib/couchbase/protostellar/retry/reason.rb +67 -0
  101. data/lib/couchbase/protostellar/retry/strategies/best_effort.rb +49 -0
  102. data/lib/couchbase/protostellar/retry/strategies.rb +26 -0
  103. data/lib/couchbase/protostellar/retry.rb +28 -0
  104. data/lib/couchbase/protostellar/scope.rb +57 -0
  105. data/lib/couchbase/protostellar/timeout_defaults.rb +30 -0
  106. data/lib/couchbase/protostellar/timeouts.rb +83 -0
  107. data/lib/couchbase/protostellar.rb +29 -0
  108. data/lib/couchbase/query_options.rb +120 -0
  109. data/lib/couchbase/railtie.rb +45 -0
  110. data/lib/couchbase/raw_binary_transcoder.rb +37 -0
  111. data/lib/couchbase/raw_json_transcoder.rb +38 -0
  112. data/lib/couchbase/raw_string_transcoder.rb +40 -0
  113. data/lib/couchbase/scope.rb +256 -0
  114. data/lib/couchbase/search_options.rb +1622 -0
  115. data/lib/couchbase/subdoc.rb +290 -0
  116. data/lib/couchbase/transcoder_flags.rb +62 -0
  117. data/lib/couchbase/utils/generic_logger_adapter.rb +38 -0
  118. data/lib/couchbase/utils/stdlib_logger_adapter.rb +65 -0
  119. data/lib/couchbase/utils/time.rb +69 -0
  120. data/lib/couchbase/utils.rb +21 -0
  121. data/lib/couchbase/version.rb +23 -0
  122. data/lib/couchbase/view_options.rb +65 -0
  123. data/lib/couchbase.rb +28 -0
  124. data/lib/rails/generators/couchbase/config/config_generator.rb +27 -0
  125. 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