Class: Locomotive::Steam::Adapters::Memory::Dataset

Inherits:
Object
  • Object
show all
Defined in:
lib/locomotive/steam/adapters/memory/dataset.rb

Defined Under Namespace

Classes: PrimaryKey

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#nameObject (readonly)

Returns the value of attribute name.



18
19
20
# File 'lib/locomotive/steam/adapters/memory/dataset.rb', line 18

def name
  @name
end

#recordsObject (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

#allObject



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

Returns:

  • (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

#sizeObject



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