Class: Couchbase::Options::Analytics

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

Overview

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.

Analytics.new.freeze

Instance Attribute Summary collapse

Attributes inherited from Base

#client_context, #parent_span, #retry_strategy, #timeout

Instance Method Summary collapse

Constructor Details

#initialize(client_context_id: nil, scan_consistency: nil, readonly: false, priority: nil, transcoder: JsonTranscoder.new, positional_parameters: nil, named_parameters: nil, scope_qualifier: nil, timeout: nil, retry_strategy: nil, client_context: nil, parent_span: nil) {|self| ... } ⇒ Analytics

Note:

Either positional_parameters or named_parameters may be specified.

Creates new instance of options for Cluster#analytics_query

Parameters:

  • client_context_id (String) (defaults to: nil)

    provides a custom client context ID for this query

  • scan_consistency (Symbol) (defaults to: nil)

    specifies level of consistency for the query

    :not_bounded

    The index will return whatever state it has to the analytics query engine at the time of query.

    This is the default (for single-statement requests). No timestamp vector is used in the index scan. This is also the fastest mode, because we avoid the cost of obtaining the vector, and we also avoid any wait for the index

    :request_plus

    The index will wait until all mutations have been processed at the time of request before being processed in the analytics query engine.

    This implements strong consistency per request. Before processing the request, a current vector is obtained. The vector is used as a lower bound for the statements in the request.

  • readonly (Boolean) (defaults to: false)

    allows explicitly marking a query as being readonly and not mutating any documents on the server side.

  • priority (Boolean) (defaults to: nil)

    allows to give certain requests higher priority than others

  • transcoder (JsonTranscoder) (defaults to: JsonTranscoder.new)

    to decode rows

  • positional_parameters (Array<#to_json>, nil) (defaults to: nil)

    parameters to be used as substitution for numbered macros like $1, $2 in query string

  • named_parameters (Hash<String => #to_json>, nil) (defaults to: nil)

    parameters to be used as substitution for named macros like $name in query string

  • scope_qualifier (String, nil) (defaults to: nil)

    Associate scope qualifier (also known as query_context) with the query. The qualifier must be in form {bucket_name}.{scope_name} or default:{bucket_name}.{scope_name}.

  • timeout (Integer, #in_milliseconds, nil) (defaults to: nil)
  • retry_strategy (Proc, nil) (defaults to: nil)

    the custom retry strategy, if set

  • client_context (Hash, nil) (defaults to: nil)

    the client context data, if set

  • parent_span (Span, nil) (defaults to: nil)

    if set holds the parent span, that should be used for this request

Yield Parameters:

Raises:

  • (ArgumentError)


1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
# File 'lib/couchbase/options.rb', line 1896

def initialize(client_context_id: nil,
               scan_consistency: nil,
               readonly: false,
               priority: nil,
               transcoder: JsonTranscoder.new,
               positional_parameters: nil,
               named_parameters: nil,
               scope_qualifier: 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)
  @client_context_id = client_context_id
  @scan_consistency = scan_consistency
  @readonly = readonly
  @priority = priority
  @transcoder = transcoder
  @positional_parameters = positional_parameters
  @named_parameters = named_parameters
  @scope_qualifier = scope_qualifier
  @raw_parameters = {}
  yield self if block_given?
end

Instance Attribute Details

#client_context_idString

Returns:

  • (String)


1854
1855
1856
# File 'lib/couchbase/options.rb', line 1854

def client_context_id
  @client_context_id
end

#priorityBoolean

Returns:

  • (Boolean)


1857
1858
1859
# File 'lib/couchbase/options.rb', line 1857

def priority
  @priority
end

#readonlyBoolean

Returns:

  • (Boolean)


1856
1857
1858
# File 'lib/couchbase/options.rb', line 1856

def readonly
  @readonly
end

#scan_consistencySymbol

Returns:

  • (Symbol)


1855
1856
1857
# File 'lib/couchbase/options.rb', line 1855

def scan_consistency
  @scan_consistency
end

#scope_qualifierString

Returns:

  • (String)


1859
1860
1861
# File 'lib/couchbase/options.rb', line 1859

def scope_qualifier
  @scope_qualifier
end

#transcoderJsonTranscoder, #decode(String)

Returns:



1858
1859
1860
# File 'lib/couchbase/options.rb', line 1858

def transcoder
  @transcoder
end

Instance Method Details

#named_parameters(named) ⇒ Object

Sets named parameters for the query

Parameters:

  • named (Hash)

    the key/value map of the parameters to substitute in the statement



1934
1935
1936
1937
# File 'lib/couchbase/options.rb', line 1934

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

#positional_parameters(positional) ⇒ Object

Sets positional parameters for the query

Parameters:

  • positional (Array)

    the list of parameters that have to be substituted in the statement



1926
1927
1928
1929
# File 'lib/couchbase/options.rb', line 1926

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

Parameters:

  • key (String)

    the parameter name (key of the JSON property)

  • value (Object)

    the parameter value (value of the JSON property)



1943
1944
1945
# File 'lib/couchbase/options.rb', line 1943

def raw(key, value)
  @raw_parameters[key] = JSON.generate(value)
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.



1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
# File 'lib/couchbase/options.rb', line 1948

def to_backend(scope_name: nil, bucket_name: nil)
  {
    timeout: Utils::Time.extract_duration(@timeout),
    client_context_id: @client_context_id,
    scan_consistency: @scan_consistency,
    readonly: @readonly,
    priority: @priority,
    positional_parameters: export_positional_parameters,
    named_parameters: export_named_parameters,
    raw_parameters: @raw_parameters,
    scope_qualifier: @scope_qualifier,
    scope_name: scope_name,
    bucket_name: bucket_name,
  }
end