Module: Cequel::Record::Persistence
- Extended by:
- ActiveSupport::Concern, Forwardable
- Defined in:
- lib/cequel/record/persistence.rb
Overview
This module provides functionality for loading and saving records to the Cassandra database.
Defined Under Namespace
Modules: ClassMethods
Instance Method Summary collapse
-
#destroy(options = {}) ⇒ Record
Remove this record from the database.
-
#exists? ⇒ Boolean
(also: #exist?)
Check if an unloaded record exists in the database.
- #hydrate(row) ⇒ Object
-
#key_attributes ⇒ Hash
The attributes of this record that make up the primary key.
-
#key_values ⇒ Array
(also: #to_key)
The values of the primary key columns for this record.
-
#load ⇒ Record
Load an unloaded record’s row from the database and hydrate the record’s attributes.
-
#load! ⇒ Record
Attempt to load an unloaded record and raise an error if the record does not correspond to a row in the database.
- #loaded?(column = nil) ⇒ Boolean
-
#new_record? ⇒ Boolean
True if this is a new, unsaved record.
-
#persisted? ⇒ Boolean
True if this record is persisted in the database.
-
#save(options = {}) ⇒ Boolean
Persist the record to the database.
-
#transient? ⇒ Boolean
True if this record is not persisted in the database.
-
#update_attributes(attributes) ⇒ Boolean
Set attributes and save the record.
Instance Method Details
#destroy(options = {}) ⇒ Record
Remove this record from the database
202 203 204 205 206 207 208 |
# File 'lib/cequel/record/persistence.rb', line 202 def destroy( = {}) .assert_valid_keys(:consistency) assert_keys_present! .delete() transient! self end |
#exists? ⇒ Boolean Also known as: exist?
Check if an unloaded record exists in the database
100 101 102 103 104 105 |
# File 'lib/cequel/record/persistence.rb', line 100 def exists? load! true rescue RecordNotFound false end |
#hydrate(row) ⇒ Object
238 239 240 241 242 |
# File 'lib/cequel/record/persistence.rb', line 238 def hydrate(row) @attributes = row hydrated! self end |
#key_attributes ⇒ Hash
Returns the attributes of this record that make up the primary key.
77 78 79 |
# File 'lib/cequel/record/persistence.rb', line 77 def key_attributes @attributes.slice(*self.class.key_column_names) end |
#key_values ⇒ Array Also known as: to_key
Returns the values of the primary key columns for this record.
87 88 89 |
# File 'lib/cequel/record/persistence.rb', line 87 def key_values key_attributes.values end |
#load ⇒ Record
Load an unloaded record’s row from the database and hydrate the record’s attributes
116 117 118 119 120 |
# File 'lib/cequel/record/persistence.rb', line 116 def load assert_keys_present! record_collection.load! unless loaded? self end |
#load! ⇒ Record
Attempt to load an unloaded record and raise an error if the record does not correspond to a row in the database
132 133 134 135 136 137 138 139 140 |
# File 'lib/cequel/record/persistence.rb', line 132 def load! load.tap do if transient? fail RecordNotFound, "Couldn't find #{self.class.name} with " \ "#{key_attributes.inspect}" end end end |
#loaded? ⇒ Boolean #loaded?(column) ⇒ Boolean
155 156 157 |
# File 'lib/cequel/record/persistence.rb', line 155 def loaded?(column = nil) !!@loaded && (column.nil? || @attributes.key?(column.to_sym)) end |
#new_record? ⇒ Boolean
Returns true if this is a new, unsaved record.
215 216 217 |
# File 'lib/cequel/record/persistence.rb', line 215 def new_record? !!@new_record end |
#persisted? ⇒ Boolean
Returns true if this record is persisted in the database.
224 225 226 |
# File 'lib/cequel/record/persistence.rb', line 224 def persisted? !!@persisted end |
#save(options = {}) ⇒ Boolean
Persist the record to the database. If this is a new record, it will be saved using an INSERT statement. If it is an existing record, it will be persisted using a series of ‘UPDATE` and `DELETE` statements which will persist all changes to the database, including atomic collection modifications.
173 174 175 176 177 178 179 180 |
# File 'lib/cequel/record/persistence.rb', line 173 def save( = {}) .assert_valid_keys(:consistency) if new_record? then create() else update() end @new_record = false true end |
#transient? ⇒ Boolean
Returns true if this record is not persisted in the database.
233 234 235 |
# File 'lib/cequel/record/persistence.rb', line 233 def transient? !persisted? end |
#update_attributes(attributes) ⇒ Boolean
Set attributes and save the record
192 193 194 195 |
# File 'lib/cequel/record/persistence.rb', line 192 def update_attributes(attributes) self.attributes = attributes save end |