Class: Couchbase::Options::Insert

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

Overview

Options for Collection#insert

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.

API:

  • private

Insert.new.freeze

Instance Attribute Summary collapse

Attributes inherited from Base

#client_context, #parent_span, #retry_strategy, #timeout

Instance Method Summary collapse

Constructor Details

#initialize(expiry: nil, transcoder: JsonTranscoder.new, durability_level: :none, replicate_to: :none, persist_to: :none, timeout: nil, retry_strategy: nil, client_context: nil, parent_span: nil) {|| ... } ⇒ Insert

Creates an instance of options for Collection#insert

Yield Parameters:

Parameters:

  • (defaults to: nil)

    expiration time to associate with the document

  • (defaults to: JsonTranscoder.new)

    used for encoding

  • (defaults to: :none)

    level of durability

    :none

    no enhanced durability required for the mutation

    :majority

    the mutation must be replicated to a majority of the Data Service nodes (that is, held in the memory allocated to the bucket)

    :majority_and_persist_to_active

    The mutation must be replicated to a majority of the Data Service nodes. Additionally, it must be persisted (that is, written and synchronised to disk) on the node hosting the active partition (vBucket) for the data.

    :persist_to_majority

    The mutation must be persisted to a majority of the Data Service nodes. Accordingly, it will be written to disk on those nodes.

  • (defaults to: :none)

    number of nodes to replicate

    :none

    do not apply any replication requirements.

    :one

    wait for replication to at least one node.

    :two

    wait for replication to at least two nodes.

    :three

    wait for replication to at least three nodes.

  • (defaults to: :none)

    number of nodes to persist

    :none

    do not apply any persistence requirements.

    :active

    wait for persistence to active node

    :one

    wait for persistence to at least one node.

    :two

    wait for persistence to at least two nodes.

    :three

    wait for persistence to at least three nodes.

    :four

    wait for persistence to four nodes (active and replicas).

  • (defaults to: nil)
  • (defaults to: nil)

    the custom retry strategy, if set

  • (defaults to: nil)

    the client context data, if set

  • (defaults to: nil)

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



581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
# File 'lib/couchbase/options.rb', line 581

def initialize(expiry: nil,
               transcoder: JsonTranscoder.new,
               durability_level: :none,
               replicate_to: :none,
               persist_to: :none,
               timeout: nil,
               retry_strategy: nil,
               client_context: nil,
               parent_span: nil)
  super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
  @expiry = expiry
  @transcoder = transcoder
  if durability_level != :none && (replicate_to != :none || persist_to != :none)
    raise ArgumentError, "durability_level conflicts with replicate_to and persist_to options"
  end

  @persist_to = persist_to
  @replicate_to = replicate_to
  @durability_level = durability_level
  yield self if block_given?
end

Instance Attribute Details

#durability_levelSymbol

Returns:



543
544
545
# File 'lib/couchbase/options.rb', line 543

def durability_level
  @durability_level
end

#expiryInteger, ...

Returns:



541
542
543
# File 'lib/couchbase/options.rb', line 541

def expiry
  @expiry
end

#transcoderJsonTranscoder, #encode(Object)

Returns:



542
543
544
# File 'lib/couchbase/options.rb', line 542

def transcoder
  @transcoder
end

Instance Method Details

#to_backendObject

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.

API:

  • private



604
605
606
607
608
609
610
611
612
# File 'lib/couchbase/options.rb', line 604

def to_backend
  {
    timeout: Utils::Time.extract_duration(@timeout),
    expiry: Utils::Time.extract_expiry_time(@expiry),
    durability_level: @durability_level,
    persist_to: @persist_to,
    replicate_to: @replicate_to,
  }
end