Class: Couchbase::Options::Query

Inherits:
Base
  • Object
show all
Defined in:
lib/couchbase/options.rb

Overview

Options for Cluster#query

Constant Summary collapse

DEFAULT =

This constant is part of a private API. You should avoid using this constant if possible, as it may be removed or be changed in the future.

Query.new.freeze

Instance Attribute Summary collapse

Attributes inherited from Base

#client_context, #parent_span, #retry_strategy, #timeout

Instance Method Summary collapse

Constructor Details

#initialize(adhoc: true, client_context_id: nil, max_parallelism: nil, readonly: false, scan_wait: nil, scan_cap: nil, pipeline_cap: nil, pipeline_batch: nil, metrics: nil, profile: :off, flex_index: nil, preserve_expiry: nil, use_replica: nil, scope_qualifier: nil, scan_consistency: :not_bounded, mutation_state: nil, transcoder: JsonTranscoder.new, positional_parameters: nil, named_parameters: nil, timeout: nil, retry_strategy: nil, client_context: nil, parent_span: nil) {|self| ... } ⇒ Query

Note:

Either positional_parameters or named_parameters may be specified.

Creates new instance of options for Cluster#query

Yield Parameters:

Raises:

  • (ArgumentError)


2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
# File 'lib/couchbase/options.rb', line 2172

def initialize(adhoc: true,
               client_context_id: nil,
               max_parallelism: nil,
               readonly: false,
               scan_wait: nil,
               scan_cap: nil,
               pipeline_cap: nil,
               pipeline_batch: nil,
               metrics: nil,
               profile: :off,
               flex_index: nil,
               preserve_expiry: nil,
               use_replica: nil,
               scope_qualifier: nil,
               scan_consistency: :not_bounded,
               mutation_state: nil,
               transcoder: JsonTranscoder.new,
               positional_parameters: nil,
               named_parameters: nil,
               timeout: nil,
               retry_strategy: nil,
               client_context: nil,
               parent_span: nil)
  raise ArgumentError, "Cannot pass positional and named parameters at the same time" if positional_parameters && named_parameters

  super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
  @adhoc = adhoc
  @client_context_id = client_context_id
  @max_parallelism = max_parallelism
  @readonly = readonly
  @scan_wait = scan_wait
  @scan_cap = scan_cap
  @pipeline_cap = pipeline_cap
  @pipeline_batch = pipeline_batch
  @metrics = metrics
  @profile = profile
  @flex_index = flex_index
  @preserve_expiry = preserve_expiry
  @use_replica = use_replica
  @scope_qualifier = scope_qualifier
  @scan_consistency = scan_consistency
  @mutation_state = mutation_state
  @transcoder = transcoder
  @positional_parameters = positional_parameters
  @named_parameters = named_parameters
  @raw_parameters = {}
  yield self if block_given?
end

Instance Attribute Details

#adhocBoolean



2093
2094
2095
# File 'lib/couchbase/options.rb', line 2093

def adhoc
  @adhoc
end

#client_context_idString



2094
2095
2096
# File 'lib/couchbase/options.rb', line 2094

def client_context_id
  @client_context_id
end

#flex_indexBoolean



2103
2104
2105
# File 'lib/couchbase/options.rb', line 2103

def flex_index
  @flex_index
end

#max_parallelismInteger



2095
2096
2097
# File 'lib/couchbase/options.rb', line 2095

def max_parallelism
  @max_parallelism
end

#metricsBoolean



2101
2102
2103
# File 'lib/couchbase/options.rb', line 2101

def metrics
  @metrics
end

#mutation_stateMutationState (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



2285
2286
2287
# File 'lib/couchbase/options.rb', line 2285

def mutation_state
  @mutation_state
end

#pipeline_batchInteger



2099
2100
2101
# File 'lib/couchbase/options.rb', line 2099

def pipeline_batch
  @pipeline_batch
end

#pipeline_capInteger



2100
2101
2102
# File 'lib/couchbase/options.rb', line 2100

def pipeline_cap
  @pipeline_cap
end

#preserve_expiryBoolean



2104
2105
2106
# File 'lib/couchbase/options.rb', line 2104

def preserve_expiry
  @preserve_expiry
end

#profileSymbol



2102
2103
2104
# File 'lib/couchbase/options.rb', line 2102

def profile
  @profile
end

#raw_parametersHash<String => #to_json> (readonly)

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



2289
2290
2291
# File 'lib/couchbase/options.rb', line 2289

def raw_parameters
  @raw_parameters
end

#readonlyBoolean



2096
2097
2098
# File 'lib/couchbase/options.rb', line 2096

def readonly
  @readonly
end

#scan_capInteger



2098
2099
2100
# File 'lib/couchbase/options.rb', line 2098

def scan_cap
  @scan_cap
end

#scan_waitInteger, #in_milliseconds



2097
2098
2099
# File 'lib/couchbase/options.rb', line 2097

def scan_wait
  @scan_wait
end

#scope_qualifierString



2106
2107
2108
# File 'lib/couchbase/options.rb', line 2106

def scope_qualifier
  @scope_qualifier
end

#transcoderJsonTranscoder, #decode(String)



2107
2108
2109
# File 'lib/couchbase/options.rb', line 2107

def transcoder
  @transcoder
end

#use_replicaBoolean?



2105
2106
2107
# File 'lib/couchbase/options.rb', line 2105

def use_replica
  @use_replica
end

Instance Method Details

#consistent_with(mutation_state) ⇒ Object

Note:

overrides consistency level set by #scan_consistency=

Sets the mutation tokens this query should be consistent with



2250
2251
2252
2253
# File 'lib/couchbase/options.rb', line 2250

def consistent_with(mutation_state)
  @scan_consistency = nil if @scan_consistency
  @mutation_state = mutation_state
end

#export_named_parametersHash<String => String>?

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



2279
2280
2281
# File 'lib/couchbase/options.rb', line 2279

def export_named_parameters
  @named_parameters&.each_with_object({}) { |(n, v), o| o[n.to_s] = JSON.dump(v) }
end

#export_positional_parametersArray<String>?

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



2265
2266
2267
# File 'lib/couchbase/options.rb', line 2265

def export_positional_parameters
  @positional_parameters&.map { |p| JSON.dump(p) }
end

#named_parameters(named) ⇒ Object

Sets named parameters for the query



2272
2273
2274
2275
# File 'lib/couchbase/options.rb', line 2272

def named_parameters(named)
  @named_parameters = named
  @positional_parameters = nil
end

#positional_parameters(positional) ⇒ Object

Sets positional parameters for the query



2258
2259
2260
2261
# File 'lib/couchbase/options.rb', line 2258

def positional_parameters(positional)
  @positional_parameters = positional
  @named_parameters = nil
end

#raw(key, value) ⇒ Object

Allows providing custom JSON key/value pairs for advanced usage



2225
2226
2227
# File 'lib/couchbase/options.rb', line 2225

def raw(key, value)
  @raw_parameters[key] = JSON.generate(value)
end

#scan_consistency=(level) ⇒ Object

Note:

overrides consistency level set by #consistent_with

Customizes the consistency guarantees for this query

[+:not_bounded+] The indexer will return whatever state it has to the query engine at the time of query. This is the default (for single-statement requests).

[+:request_plus+] The indexer will wait until all mutations have been processed at the time of request before returning to the query engine.



2240
2241
2242
2243
# File 'lib/couchbase/options.rb', line 2240

def scan_consistency=(level)
  @mutation_state = nil if @mutation_state
  @scan_consistency = level
end

#to_backend(scope_name: nil, bucket_name: nil) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.



2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
# File 'lib/couchbase/options.rb', line 2292

def to_backend(scope_name: nil, bucket_name: nil)
  if scope_name && bucket_name
    default_query_context = format("default:`%<bucket>s`.`%<scope>s`", bucket: bucket_name, scope: scope_name)
  end
  {
    timeout: Utils::Time.extract_duration(@timeout),
    adhoc: @adhoc,
    client_context_id: @client_context_id,
    max_parallelism: @max_parallelism,
    readonly: @readonly,
    flex_index: @flex_index,
    preserve_expiry: @preserve_expiry,
    use_replica: @use_replica,
    scan_wait: Utils::Time.extract_duration(@scan_wait),
    scan_cap: @scan_cap,
    pipeline_batch: @pipeline_batch,
    pipeline_cap: @pipeline_cap,
    metrics: @metrics,
    profile: @profile,
    positional_parameters: export_positional_parameters,
    named_parameters: export_named_parameters,
    raw_parameters: @raw_parameters,
    scan_consistency: @scan_consistency,
    mutation_state: @mutation_state&.to_a,
    query_context: @scope_qualifier || default_query_context,
  }
end