Class: Couchbase::Bucket

Inherits:
Object
  • Object
show all
Defined in:
lib/couchbase/bucket.rb,
lib/couchbase/view_options.rb

Overview

Provides access to a Couchbase bucket APIs

Defined Under Namespace

Classes: ViewMetaData, ViewResult, ViewRow

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(backend, name) ⇒ Bucket

Returns a new instance of Bucket.

Parameters:

  • backend (Couchbase::Backend)


33
34
35
36
37
# File 'lib/couchbase/bucket.rb', line 33

def initialize(backend, name)
  backend.open_bucket(name, true)
  @backend = backend
  @name = name
end

Instance Attribute Details

#nameString (readonly)

Returns name of the bucket.

Returns:

  • (String)

    name of the bucket



28
29
30
# File 'lib/couchbase/bucket.rb', line 28

def name
  @name
end

Instance Method Details

#collection(collection_name) ⇒ Collection

Opens the named collection in the default scope of the bucket

Parameters:

  • collection_name (String)

    name of the collection

Returns:



60
61
62
# File 'lib/couchbase/bucket.rb', line 60

def collection(collection_name)
  default_scope.collection(collection_name)
end

#collectionsManagement::CollectionManager



103
104
105
# File 'lib/couchbase/bucket.rb', line 103

def collections
  Management::CollectionManager.new(@backend, @name)
end

#default_collectionCollection

Opens the default collection for this bucket

Returns:



67
68
69
# File 'lib/couchbase/bucket.rb', line 67

def default_collection
  Collection.new(@backend, @name, "_default", "_default")
end

#default_scopeScope

Get default scope

Returns:



42
43
44
# File 'lib/couchbase/bucket.rb', line 42

def default_scope
  Scope.new(@backend, @name, "_default")
end

#ping(options = Options::Ping::DEFAULT) ⇒ PingResult

Performs application-level ping requests against services in the couchbase cluster

Parameters:

Returns:



117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
# File 'lib/couchbase/bucket.rb', line 117

def ping(options = Options::Ping::DEFAULT)
  resp = @backend.ping(@name, options.to_backend)
  PingResult.new do |res|
    res.version = resp[:version]
    res.id = resp[:id]
    res.sdk = resp[:sdk]
    resp[:services].each do |type, svcs|
      res.services[type] = svcs.map do |svc|
        PingResult::ServiceInfo.new do |info|
          info.id = svc[:id]
          info.state = svc[:state]
          info.latency = svc[:latency]
          info.remote = svc[:remote]
          info.local = svc[:local]
          info.error = svc[:error]
        end
      end
    end
  end
end

#scope(scope_name) ⇒ Scope

Get a named scope

Parameters:

  • scope_name (String)

    name of the scope

Returns:



51
52
53
# File 'lib/couchbase/bucket.rb', line 51

def scope(scope_name)
  Scope.new(@backend, @name, scope_name)
end

#view_indexesManagement::ViewIndexManager



108
109
110
# File 'lib/couchbase/bucket.rb', line 108

def view_indexes
  Management::ViewIndexManager.new(@backend, @name)
end

#view_query(design_document_name, view_name, options = Options::View::DEFAULT) ⇒ ViewResult

Performs query to view index.

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

Parameters:

  • design_document_name (String)

    name of the design document

  • view_name (String)

    name of the view to query

  • options (Options::View) (defaults to: Options::View::DEFAULT)

Returns:



85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'lib/couchbase/bucket.rb', line 85

def view_query(design_document_name, view_name, options = Options::View::DEFAULT)
  resp = @backend.document_view(@name, design_document_name, view_name, options.namespace, options.to_backend)
  ViewResult.new do |res|
    res. = ViewMetaData.new do |meta|
      meta.total_rows = resp[:meta][:total_rows]
      meta.debug_info = resp[:meta][:debug_info]
    end
    res.rows = resp[:rows].map do |entry|
      ViewRow.new do |row|
        row.id = entry[:id] if entry.key?(:id)
        row.key = JSON.parse(entry[:key])
        row.value = JSON.parse(entry[:value])
      end
    end
  end
end