Class: Locomotive::Steam::Adapters::Memory::Dataset
- Inherits:
-
Object
- Object
- Locomotive::Steam::Adapters::Memory::Dataset
- Defined in:
- lib/locomotive/steam/adapters/memory/dataset.rb
Defined Under Namespace
Classes: PrimaryKey
Instance Attribute Summary collapse
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#records ⇒ Object
readonly
Returns the value of attribute records.
Instance Method Summary collapse
- #all ⇒ Object
- #clear! ⇒ Object
- #delete(id) ⇒ Object
- #exists?(id) ⇒ Boolean
- #find(id) ⇒ Object
-
#initialize(name) ⇒ Dataset
constructor
A new instance of Dataset.
- #insert(record) ⇒ Object
- #query(locale = nil, &block) ⇒ Object
- #size ⇒ Object
- #update(record) ⇒ Object
Constructor Details
#initialize(name) ⇒ Dataset
Returns a new instance of Dataset.
20 21 22 23 |
# File 'lib/locomotive/steam/adapters/memory/dataset.rb', line 20 def initialize(name) @name = name clear! end |
Instance Attribute Details
#name ⇒ Object (readonly)
Returns the value of attribute name.
18 19 20 |
# File 'lib/locomotive/steam/adapters/memory/dataset.rb', line 18 def name @name end |
#records ⇒ Object (readonly)
Returns the value of attribute records.
18 19 20 |
# File 'lib/locomotive/steam/adapters/memory/dataset.rb', line 18 def records @records end |
Instance Method Details
#all ⇒ Object
46 47 48 |
# File 'lib/locomotive/steam/adapters/memory/dataset.rb', line 46 def all records.values end |
#clear! ⇒ Object
64 65 66 67 |
# File 'lib/locomotive/steam/adapters/memory/dataset.rb', line 64 def clear! @records = {} @primary_key = PrimaryKey.new end |
#delete(id) ⇒ Object
38 39 40 |
# File 'lib/locomotive/steam/adapters/memory/dataset.rb', line 38 def delete(id) records.delete(id) end |
#exists?(id) ⇒ Boolean
56 57 58 |
# File 'lib/locomotive/steam/adapters/memory/dataset.rb', line 56 def exists?(id) !!id && records.has_key?(id) end |
#find(id) ⇒ Object
50 51 52 53 54 |
# File 'lib/locomotive/steam/adapters/memory/dataset.rb', line 50 def find(id) records.fetch(id) do raise Locomotive::Steam::Repository::RecordNotFound, "could not find #{name} with #{identity} = #{id}" end end |
#insert(record) ⇒ Object
25 26 27 28 29 30 31 32 |
# File 'lib/locomotive/steam/adapters/memory/dataset.rb', line 25 def insert(record) @primary_key.increment! do |id| # if there is already an id, use it _id = record[identity] || id record[identity] = _id records[_id] = record end end |
#query(locale = nil, &block) ⇒ Object
60 61 62 |
# File 'lib/locomotive/steam/adapters/memory/dataset.rb', line 60 def query(locale = nil, &block) Query.new(self, locale, &block) end |
#size ⇒ Object
42 43 44 |
# File 'lib/locomotive/steam/adapters/memory/dataset.rb', line 42 def size records.size end |
#update(record) ⇒ Object
34 35 36 |
# File 'lib/locomotive/steam/adapters/memory/dataset.rb', line 34 def update(record) records[record[identity]] = records[record[identity]].deep_merge(record) end |