Module: Couchbase::Options

Defined in:
lib/couchbase/options.rb

Overview

Definition of the Option classes for data APIs

Defined Under Namespace

Classes: Analytics, Append, Base, Cluster, CouchbaseList, CouchbaseMap, CouchbaseQueue, CouchbaseSet, Decrement, Diagnostics, Exists, Get, GetAllReplicas, GetAndLock, GetAndTouch, GetAnyReplica, GetMulti, Increment, Insert, LookupIn, LookupInAllReplicas, LookupInAnyReplica, MutateIn, Ping, Prepend, Query, Remove, RemoveMulti, Replace, Scan, Search, Touch, Unlock, Upsert, UpsertMulti, VectorSearch, View

Constant Summary collapse

CommonOptions =

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.

TODO: deprecate in 3.1

::Couchbase::Options::Base

Class Method Summary collapse

Class Method Details

.Analytics(**args) ⇒ Analytics

Construct Analytics options for Cluster#analytics_query

Examples:

Select name of the given user

cluster.analytics_query("SELECT u.name AS uname FROM GleambookUsers u WHERE u.id = $user_id ",
                        Options::Analytics(named_parameters: {user_id: 2}))

Returns:



2792
2793
2794
# File 'lib/couchbase/options.rb', line 2792

def Analytics(**args)
  Analytics.new(**args)
end

.Append(**args) ⇒ Append

Construct Append options for BinaryCollection#append

Examples:

Append “bar” to the content of the existing document

collection.upsert("mydoc", "foo")
collection.binary.append("mydoc", "bar", Options::Append(timeout: 3_000))
collection.get("mydoc", Options::Get(transcoder: nil)).content #=> "foobar"

Returns:



2720
2721
2722
# File 'lib/couchbase/options.rb', line 2720

def Append(**args)
  Append.new(**args)
end

.Cluster(**args) ⇒ Cluster

Construct Cluster options for Cluster.connect

It forwards all its arguments to Couchbase::Options::Cluster#initialize

Returns:



2755
2756
2757
# File 'lib/couchbase/options.rb', line 2755

def Cluster(**args)
  Cluster.new(**args)
end

.Decrement(**args) ⇒ Decrement

Construct Decrement options for BinaryCollection#decrement

Examples:

Decrement value by 2, and initialize to 100 if it does not exist

res = collection.binary.decrement("raw_counter", Options::Decrement(delta: 2, initial: 100))
res.value #=> 100
res = collection.binary.decrement("raw_counter", Options::Decrement(delta: 2, initial: 100))
res.value #=> 98

Returns:



2781
2782
2783
# File 'lib/couchbase/options.rb', line 2781

def Decrement(**args)
  Decrement.new(**args)
end

.Diagnostics(**args) ⇒ Diagnostics

Construct Diagnostics options for Cluster#diagnostics

Returns:



2739
2740
2741
# File 'lib/couchbase/options.rb', line 2739

def Diagnostics(**args)
  Diagnostics.new(**args)
end

.Exists(**args) ⇒ Exists

Construct Exists options for Collection#exists

Examples:

Check if the document exists without fetching its contents

res = collection.exists("customer123", Options::Exists(timeout: 3_000))
res.exists? #=> true

Returns:



2579
2580
2581
# File 'lib/couchbase/options.rb', line 2579

def Exists(**args)
  Exists.new(**args)
end

.Get(**args) ⇒ Get

Construct Get options for Collection#get

Examples:

Get partial document using projections

res = collection.get("customer123", Options::Get(projections: ["name", "addresses.billing"]))
res.content

# {"addresses"=>
#    {"billing"=>
#      {"country"=>"United Kingdom",
#       "line1"=>"123 Any Street",
#       "line2"=>"Anytown"}},
#   "name"=>"Douglas Reynholm"}

Returns:



2522
2523
2524
# File 'lib/couchbase/options.rb', line 2522

def Get(**args)
  Get.new(**args)
end

.GetAllReplicas(**args) ⇒ GetAllReplicas

Returns:



2561
2562
2563
# File 'lib/couchbase/options.rb', line 2561

def GetAllReplicas(**args)
  GetAllReplicas.new(**args)
end

.GetAndLock(**args) ⇒ GetAndLock

Construct GetAndLock options for Collection#get_and_lock

Examples:

Retrieve document and lock for 10 seconds

collection.get_and_lock("customer123", 10, Options::GetAndLock(timeout: 3_000))

Returns:



2544
2545
2546
# File 'lib/couchbase/options.rb', line 2544

def GetAndLock(**args)
  GetAndLock.new(**args)
end

.GetAndTouch(**args) ⇒ GetAndTouch

Construct GetAndTouch options for Collection#get_and_touch

Examples:

Retrieve document and prolong its expiration for 10 seconds

collection.get_and_touch("customer123", 10, Options::GetAndTouch(timeout: 3_000))

Returns:



2554
2555
2556
# File 'lib/couchbase/options.rb', line 2554

def GetAndTouch(**args)
  GetAndTouch.new(**args)
end

.GetAnyReplica(**args) ⇒ GetAnyReplica

Returns:



2568
2569
2570
# File 'lib/couchbase/options.rb', line 2568

def GetAnyReplica(**args)
  GetAnyReplica.new(**args)
end

.GetMulti(**args) ⇒ GetMulti

Construct GetMulti options for Collection#get_multi

Examples:

Fetch “foo” and “bar” in a batch

res = collection.get(["foo", "bar"], Options::GetMulti(timeout: 3_000))
res[0].content #=> content of "foo"
res[1].content #=> content of "bar"

Returns:



2534
2535
2536
# File 'lib/couchbase/options.rb', line 2534

def GetMulti(**args)
  GetMulti.new(**args)
end

.Increment(**args) ⇒ Increment

Construct Increment options for BinaryCollection#increment

Examples:

Increment value by 10, and initialize to 0 if it does not exist

res = collection.binary.increment("raw_counter", Options::Increment(delta: 10, initial: 0))
res.content #=> 0
res = collection.binary.increment("raw_counter", Options::Increment(delta: 10, initial: 0))
res.content #=> 10

Returns:



2768
2769
2770
# File 'lib/couchbase/options.rb', line 2768

def Increment(**args)
  Increment.new(**args)
end

.Insert(**args) ⇒ Insert

Construct Insert options for Collection#insert

Examples:

Insert new document in collection

res = collection.insert("mydoc", {"foo" => 42}, Options::Insert(expiry: 20))
res.cas #=> 242287264414742

Returns:



2644
2645
2646
# File 'lib/couchbase/options.rb', line 2644

def Insert(**args)
  Insert.new(**args)
end

.LookupIn(**args) ⇒ LookupIn

Construct LookupIn options for Collection#lookup_in

Examples:

Get list of IDs of completed purchases

lookup_specs = [
  LookupInSpec::get("purchases.complete")
]
collection.lookup_in("customer123", lookup_specs, Options::LookupIn(timeout: 3_000))

Returns:



2708
2709
2710
# File 'lib/couchbase/options.rb', line 2708

def LookupIn(**args)
  LookupIn.new(**args)
end

.MutateIn(**args) ⇒ MutateIn

Construct MutateIn options for Collection#mutate_in

Examples:

Append number into subarray of the document

mutation_specs = [
  MutateInSpec::array_append("purchases.complete", [42])
]
collection.mutate_in("customer123", mutation_specs, Options::MutateIn(expiry: 10))

Returns:



2695
2696
2697
# File 'lib/couchbase/options.rb', line 2695

def MutateIn(**args)
  MutateIn.new(**args)
end

.Ping(**args) ⇒ Ping

Construct Ping options for Bucket#ping

Returns:



2746
2747
2748
# File 'lib/couchbase/options.rb', line 2746

def Ping(**args)
  Ping.new(**args)
end

.Prepend(**args) ⇒ Prepend

Construct Prepend options for BinaryCollection#prepend

Examples:

Prepend “bar” to the content of the existing document

collection.upsert("mydoc", "foo")
collection.binary.prepend("mydoc", "bar", Options::Prepend(timeout: 3_000))
collection.get("mydoc", Options::Get(transcoder: nil)).content #=> "barfoo"

Returns:



2732
2733
2734
# File 'lib/couchbase/options.rb', line 2732

def Prepend(**args)
  Prepend.new(**args)
end

.Query(**args) ⇒ Query

Construct Query options for Cluster#query

Examples:

Select first ten hotels from travel sample dataset

cluster.query("SELECT * FROM `travel-sample` WHERE type = $type LIMIT 10",
              Options::Query(named_parameters: {type: "hotel"}, metrics: true))

Returns:



2803
2804
2805
# File 'lib/couchbase/options.rb', line 2803

def Query(**args)
  Query.new(**args)
end

.Remove(**args) ⇒ Remove

Construct Remove options for Collection#remove

Examples:

Remove the document in collection, but apply optimistic lock

res = collection.upsert("mydoc", {"foo" => 42})
res.cas #=> 7751414725654

begin
  res = collection.remove("customer123", Options::Remove(cas: 3735928559))
rescue Error::CasMismatch
  puts "Failed to remove the document, it might be changed by other application"
end

Returns:



2617
2618
2619
# File 'lib/couchbase/options.rb', line 2617

def Remove(**args)
  Remove.new(**args)
end

.RemoveMulti(**args) ⇒ RemoveMulti

Construct RemoveMulti options for Collection#remove_multi

Examples:

Remove two documents in collection. For “mydoc” apply optimistic lock

res = collection.upsert("mydoc", {"foo" => 42})
res.cas #=> 7751414725654

res = collection.remove_multi(["foo", ["mydoc", res.cas]], Options::RemoveMulti(timeout: 3_000))
if res[1].error.is_a?(Error::CasMismatch)
  puts "Failed to remove the document, it might be changed by other application"
end

Returns:



2633
2634
2635
# File 'lib/couchbase/options.rb', line 2633

def RemoveMulti(**args)
  RemoveMulti.new(**args)
end

.Replace(**args) ⇒ Replace

Construct Replace options for Collection#replace

Examples:

Replace new document in collection with optimistic locking

res = collection.get("mydoc")
res = collection.replace("mydoc", {"foo" => 42}, Options::Replace(cas: res.cas))
res.cas #=> 242287264414742

Returns:



2682
2683
2684
# File 'lib/couchbase/options.rb', line 2682

def Replace(**args)
  Replace.new(**args)
end

.Scan(**args) ⇒ Scan

Construct Scan options for Collection#scan

Returns:



2840
2841
2842
# File 'lib/couchbase/options.rb', line 2840

def Scan(**args)
  Scan.new(**args)
end

.Search(**args) ⇒ Search

Construct Search options for Cluster#search_query

Examples:

Return first 10 results of “hop beer” query and request highlighting

cluster.search_query("beer_index", Cluster::SearchQuery.match_phrase("hop beer"),
                     Options::Search(
                       limit: 10,
                       fields: %w[name],
                       highlight_style: :html,
                       highlight_fields: %w[name description]
                     ))

Returns:



2819
2820
2821
# File 'lib/couchbase/options.rb', line 2819

def Search(**args)
  Search.new(**args)
end

.Touch(**args) ⇒ Touch

Construct Touch options for Collection#touch

Examples:

Reset expiration timer for document to 30 seconds (and use custom operation timeout)

res = collection.touch("customer123", 30, Options::Touch(timeout: 3_000))

Returns:



2589
2590
2591
# File 'lib/couchbase/options.rb', line 2589

def Touch(**args)
  Touch.new(**args)
end

.Unlock(**args) ⇒ Unlock

Construct Unlock options for Collection#touch

Examples:

Lock (pessimistically) and unlock document

res = collection.get_and_lock("customer123", 10, Options::Unlock(timeout: 3_000))
collection.unlock("customer123", res.cas)

Returns:



2600
2601
2602
# File 'lib/couchbase/options.rb', line 2600

def Unlock(**args)
  Unlock.new(**args)
end

.Upsert(**args) ⇒ Upsert

Construct Upsert options for Collection#upsert

Examples:

Upsert new document in collection

res = collection.upsert("mydoc", {"foo" => 42}, Options::Upsert(expiry: 20))
res.cas #=> 242287264414742

Returns:



2655
2656
2657
# File 'lib/couchbase/options.rb', line 2655

def Upsert(**args)
  Upsert.new(**args)
end

.UpsertMulti(**args) ⇒ UpsertMulti

Construct UpsertMulti options for Collection#upsert_multi

Examples:

Upsert two documents with IDs “foo” and “bar” into a collection with expiration 20 seconds.

res = collection.upsert_multi([
  "foo", {"foo" => 42},
  "bar", {"bar" => "some value"}
], Options::UpsertMulti(expiry: 20))
res[0].cas #=> 7751414725654
res[1].cas #=> 7751418925851

Returns:



2670
2671
2672
# File 'lib/couchbase/options.rb', line 2670

def UpsertMulti(**args)
  UpsertMulti.new(**args)
end

.View(**args) ⇒ View

Construct View options for Bucket#view_query

Examples:

Make sure the view engine catch up with all mutations and return keys starting from [“random_brewery:”]

bucket.view_query("beer", "brewery_beers",
                  Options::View(
                    start_key: ["random_brewery:"],
                    scan_consistency: :request_plus
                  ))

Returns:



2833
2834
2835
# File 'lib/couchbase/options.rb', line 2833

def View(**args)
  View.new(**args)
end