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



124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# File 'lib/couchbase/view_row.rb', line 124

def initialize(bucket, data)
  @bucket = bucket
  @data   = data
  @key    = data.key
  @last   = false
  @id     = data.id unless data.is_a?(ViewRowReduced)

  case data
  when ViewRowWithDocs, SpatialViewRowWithDocs
    @doc      = data.document
  when ViewRowReduced
    @value    = MultiJson.load(data.value)
  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



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

def data
  @data
end

#docHash

The document hash.

It usually available when view executed with :include_doc argument.

Returns:

  • (Hash)

Since:

  • 1.2.0



99
100
101
# File 'lib/couchbase/view_row.rb', line 99

def doc
  @doc
end

#idString

The identificator of the document

Returns:

  • (String)

Since:

  • 1.2.0



106
107
108
# File 'lib/couchbase/view_row.rb', line 106

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.



81
82
83
# File 'lib/couchbase/view_row.rb', line 81

def key
  @key
end

#metaHash

The meta data linked to the document

Returns:

  • (Hash)

Since:

  • 1.2.0



113
114
115
# File 'lib/couchbase/view_row.rb', line 113

def meta
  @meta
end

#valueObject

The value which was emitted by map function



90
91
92
# File 'lib/couchbase/view_row.rb', line 90

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



153
154
155
# File 'lib/couchbase/view_row.rb', line 153

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



166
167
168
# File 'lib/couchbase/view_row.rb', line 166

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



192
193
194
# File 'lib/couchbase/view_row.rb', line 192

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



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

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

#inspectObject

Since:

  • 1.2.0



205
206
207
208
209
210
211
212
# File 'lib/couchbase/view_row.rb', line 205

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



201
202
203
# File 'lib/couchbase/view_row.rb', line 201

def last?
  @last
end