Class: Couchbase::Options::Increment

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.

Increment.new.freeze

Instance Attribute Summary collapse

Attributes inherited from Base

#client_context, #parent_span, #retry_strategy, #timeout

Instance Method Summary collapse

Constructor Details

#initialize(delta: 1, initial: nil, expiry: nil, durability_level: :none, replicate_to: :none, persist_to: :none, timeout: nil, retry_strategy: nil, client_context: nil, parent_span: nil) {|self| ... } ⇒ Increment

Creates an instance of options for BinaryCollection#increment

Parameters:

  • delta (Integer) (defaults to: 1)

    the delta for the operation

  • initial (Integer) (defaults to: nil)

    if present, holds the initial value

  • expiry (Integer, #in_seconds, Time, nil) (defaults to: nil)

    if set, holds the expiration for the operation

  • durability_level (Symbol) (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.

  • replicate_to (Symbol) (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.

  • persist_to (Symbol) (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).

  • 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)


1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
# File 'lib/couchbase/options.rb', line 1377

def initialize(delta: 1,
               initial: nil,
               expiry: nil,
               durability_level: :none,
               replicate_to: :none,
               persist_to: :none,
               timeout: nil,
               retry_strategy: nil,
               client_context: nil,
               parent_span: nil)
  raise ArgumentError, "the delta cannot be less than 0" if delta.negative?

  super(timeout: timeout, retry_strategy: retry_strategy, client_context: client_context, parent_span: parent_span)
  @delta = delta
  @initial = initial
  @expiry = expiry
  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

#deltaInteger

Returns:

  • (Integer)


1335
1336
1337
# File 'lib/couchbase/options.rb', line 1335

def delta
  @delta
end

#durability_levelSymbol

Returns:

  • (Symbol)


1338
1339
1340
# File 'lib/couchbase/options.rb', line 1338

def durability_level
  @durability_level
end

#expiryInteger, #in_seconds

Returns:

  • (Integer, #in_seconds)


1337
1338
1339
# File 'lib/couchbase/options.rb', line 1337

def expiry
  @expiry
end

#initialInteger

Returns:

  • (Integer)


1336
1337
1338
# File 'lib/couchbase/options.rb', line 1336

def initial
  @initial
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.



1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
# File 'lib/couchbase/options.rb', line 1411

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