Class: Couchbase::ViewRow

Inherits:
Object
  • Object
show all
Includes:
Constants
Defined in:
lib/couchbase/view_row.rb

Overview

This class encapsulates structured JSON document

It behaves like Hash for document included into row, and has access methods to row data as well.

Direct Known Subclasses

DesignDoc

Constant Summary

Constants included from Constants

Constants::S_CAS, Constants::S_DOC, Constants::S_FLAGS, Constants::S_ID, Constants::S_IS_LAST, Constants::S_KEY, Constants::S_META, Constants::S_VALUE

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(bucket, data) ⇒ ViewRow

Initialize the document instance

It takes reference to the bucket, data hash.

Parameters:

  • bucket (Couchbase::Bucket)

    the reference to connection

  • data (Hash)

    the data hash, which was built from JSON document representation

Since:

  • 1.2.0



103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# File 'lib/couchbase/view_row.rb', line 103

def initialize(bucket, data)
  @bucket = bucket
  @data   = data
  @key    = data.key
  @value  = data.value
  @id     = data.id
  @last   = false

  case data
  when ViewRowWithDocs, SpatialViewRowWithDocs
    @doc   = data.document
  when SpatialViewRowNoDocs, SpatialViewRowWithDocs
    @geometry = data.geometry
    @bbox     = data.bbox
  end
end

Instance Attribute Details

#dataHash

The hash built from JSON document.

This is complete response from the Couchbase

Returns:

  • (Hash)

Since:

  • 1.2.0



48
49
50
# File 'lib/couchbase/view_row.rb', line 48

def data
  @data
end

#docHash

The document hash.

It usually available when view executed with :include_doc argument.

Returns:

  • (Hash)

Since:

  • 1.2.0



78
79
80
# File 'lib/couchbase/view_row.rb', line 78

def doc
  @doc
end

#idString

The identificator of the document

Returns:

  • (String)

Since:

  • 1.2.0



85
86
87
# File 'lib/couchbase/view_row.rb', line 85

def id
  @id
end

#keyObject

The key which was emitted by map function

Usually it is String (the object _id) but it could be also any compount JSON value.



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

def key
  @key
end

#metaHash

The meta data linked to the document

Returns:

  • (Hash)

Since:

  • 1.2.0



92
93
94
# File 'lib/couchbase/view_row.rb', line 92

def meta
  @meta
end

#valueObject

The value which was emitted by map function



69
70
71
# File 'lib/couchbase/view_row.rb', line 69

def value
  @value
end

Class Method Details

.wrap(bucket, data) ⇒ ViewRow

Wraps data hash into ViewRow instance

Parameters:

  • bucket (Couchbase::Bucket)

    the reference to connection

  • data (Hash)

    the data hash, which was built from JSON document representation

Returns:

See Also:

Since:

  • 1.2.0



131
132
133
# File 'lib/couchbase/view_row.rb', line 131

def self.wrap(bucket, data)
  self.new(bucket, data)
end

Instance Method Details

#[](key) ⇒ Object

Get attribute of the document

Fetches attribute from underlying document hash

Parameters:

  • key (String)

    the attribute name

Returns:

  • (Object)

    property value or nil

Since:

  • 1.2.0



144
145
146
# File 'lib/couchbase/view_row.rb', line 144

def [](key)
  @doc[key]
end

#[]=(key, value) ⇒ Object

Set document attribute

Set or update the attribute in the document hash

Parameters:

  • key (String)

    the attribute name

  • value (Object)

    the attribute value

Returns:

  • (Object)

    the value

Since:

  • 1.2.0



170
171
172
# File 'lib/couchbase/view_row.rb', line 170

def []=(key, value)
  @doc[key] = value
end

#has_key?(key) ⇒ true, false

Check attribute existence

Parameters:

  • key (String)

    the attribute name

Returns:

  • (true, false)

    true if the given attribute is present in in the document.

Since:

  • 1.2.0



156
157
158
# File 'lib/couchbase/view_row.rb', line 156

def has_key?(key)
  @doc.has_key?(key)
end

#inspectObject

Since:

  • 1.2.0



183
184
185
186
187
188
189
190
# File 'lib/couchbase/view_row.rb', line 183

def inspect
  desc = "#<#{self.class.name}:#{self.object_id}"
  [:@id, :@key, :@value, :@doc, :@meta].each do |iv|
    desc << " #{iv}=#{instance_variable_get(iv).inspect}"
  end
  desc << ">"
  desc
end

#last?true, false

Signals if this row is last in a stream

Returns:

  • (true, false)

    true if this row is last in a stream

Since:

  • 1.2.1



179
180
181
# File 'lib/couchbase/view_row.rb', line 179

def last?
  @last
end