Class: Google::Cloud::Datastore::Entity
- Inherits:
-
Object
- Object
- Google::Cloud::Datastore::Entity
- Defined in:
- lib/google/cloud/datastore/entity.rb
Overview
Entity
Entity represents a Datastore record. Every Entity has a Key, and a list of properties.
Entities in Datastore form a hierarchically structured space similar to the directory structure of a file system. When you create an entity, you can optionally designate another entity as its parent; the new entity is a child of the parent entity.
Instance Attribute Summary collapse
-
#key ⇒ Object
The Key that identifies the entity.
-
#properties ⇒ Google::Cloud::Datastore::Properties
readonly
Retrieve properties in a hash-like structure.
Instance Method Summary collapse
-
#[](prop_name) ⇒ Object?
Retrieve a property value by providing the name.
-
#[]=(prop_name, prop_value) ⇒ Object
Set a property value by name.
-
#exclude_from_indexes!(name, flag = nil) {|value| ... } ⇒ Object
Sets whether a property should be excluded from the Datastore indexes.
-
#exclude_from_indexes?(name) ⇒ Boolean
Indicates if a property is flagged to be excluded from the Datastore indexes.
-
#initialize ⇒ Entity
constructor
Create a new Entity object.
-
#persisted? ⇒ Boolean
Indicates if the record is persisted.
-
#serialized_size ⇒ Object
The number of bytes the Entity will take to serialize during API calls.
Constructor Details
#initialize ⇒ Entity
Create a new Entity object.
73 74 75 76 77 |
# File 'lib/google/cloud/datastore/entity.rb', line 73 def initialize @properties = Properties.new @key = Key.new @_exclude_indexes = {} end |
Instance Attribute Details
#key ⇒ Object
The Key that identifies the entity.
69 70 71 |
# File 'lib/google/cloud/datastore/entity.rb', line 69 def key @key end |
#properties ⇒ Google::Cloud::Datastore::Properties
Retrieve properties in a hash-like structure. Properties can be accessed or set by string or symbol.
246 247 248 |
# File 'lib/google/cloud/datastore/entity.rb', line 246 def properties @properties end |
Instance Method Details
#[](prop_name) ⇒ Object?
Retrieve a property value by providing the name.
Property values are converted from the Datastore value type
automatically. Blob properties are returned as StringIO objects.
Location properties are returned as a Hash with :longitude
and
:latitude
keys.
131 132 133 |
# File 'lib/google/cloud/datastore/entity.rb', line 131 def [] prop_name properties[prop_name] end |
#[]=(prop_name, prop_value) ⇒ Object
Set a property value by name.
Property values are converted to use the proper Datastore value type
automatically. Use an IO-compatible object (File, StringIO, Tempfile)
to indicate the property value should be stored as a Datastore blob
.
IO-compatible objects are converted to StringIO objects when they are
set. Use a Hash with :longitude
and :latitude
keys to indicate the
property value should be stored as a Geo Point/LatLng.
192 193 194 |
# File 'lib/google/cloud/datastore/entity.rb', line 192 def []= prop_name, prop_value properties[prop_name] = prop_value end |
#exclude_from_indexes!(name, flag = nil) {|value| ... } ⇒ Object
Sets whether a property should be excluded from the Datastore indexes.
Setting true
will exclude the property from the indexes. Setting
false
will include the property on any applicable indexes. The
default value is false
. This is another way of saying that values
are indexed by default.
If the property is multi-valued, each value in the list can be managed
separately for exclusion from indexing. When you call this method for
a multi-valued property, you can pass either a single boolean argument
to be applied to all of the values, or an array that contains the
boolean argument for each corresponding value in the property. For
example, if a multi-valued property contains ["a", "b"]
, and only
the value "b"
should be indexed (meaning that "a"
' should be
excluded), you should pass the array: [true, false]
.
412 413 414 415 416 417 418 419 420 |
# File 'lib/google/cloud/datastore/entity.rb', line 412 def exclude_from_indexes! name, flag = nil, &block name = name.to_s flag = block if block_given? if flag.nil? @_exclude_indexes.delete name else @_exclude_indexes[name] = flag end end |
#exclude_from_indexes?(name) ⇒ Boolean
Indicates if a property is flagged to be excluded from the Datastore
indexes. The default value is false
. This is another way of saying
that values are indexed by default.
If the property is multi-valued, each value in the list can be managed
separately for exclusion from indexing. Calling this method for a
multi-valued property will return an array that contains the
excluded
boolean value for each corresponding value in the property.
For example, if a multi-valued property contains ["a", "b"]
, and
only the value "b"
is indexed (meaning that "a"
' is excluded), the
return value for this method will be [true, false]
.
337 338 339 340 341 |
# File 'lib/google/cloud/datastore/entity.rb', line 337 def exclude_from_indexes? name value = self[name] flag = @_exclude_indexes[name.to_s] map_exclude_flag_to_value flag, value end |
#persisted? ⇒ Boolean
Indicates if the record is persisted. Default is false.
295 296 297 |
# File 'lib/google/cloud/datastore/entity.rb', line 295 def persisted? @key&.frozen? end |
#serialized_size ⇒ Object
The number of bytes the Entity will take to serialize during API calls.
425 426 427 |
# File 'lib/google/cloud/datastore/entity.rb', line 425 def serialized_size to_grpc.to_proto.length end |