class Locomotive::Steam::Adapters::Memory::Dataset

Attributes

name[R]
records[R]

Public Class Methods

new(name) click to toggle source
# File lib/locomotive/steam/adapters/memory/dataset.rb, line 20
def initialize(name)
  @name = name
  clear!
end

Public Instance Methods

all() click to toggle source
# File lib/locomotive/steam/adapters/memory/dataset.rb, line 46
def all
  records.values
end
clear!() click to toggle source
# File lib/locomotive/steam/adapters/memory/dataset.rb, line 64
def clear!
  @records = {}
  @primary_key = PrimaryKey.new
end
delete(id) click to toggle source
# File lib/locomotive/steam/adapters/memory/dataset.rb, line 38
def delete(id)
  records.delete(id)
end
exists?(id) click to toggle source
# File lib/locomotive/steam/adapters/memory/dataset.rb, line 56
def exists?(id)
  !!id && records.has_key?(id)
end
find(id) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# File lib/locomotive/steam/adapters/memory/dataset.rb, line 60
def query(locale = nil, &block)
  Query.new(self, locale, &block)
end
size() click to toggle source
# File lib/locomotive/steam/adapters/memory/dataset.rb, line 42
def size
  records.size
end
update(record) click to toggle source
# File lib/locomotive/steam/adapters/memory/dataset.rb, line 34
def update(record)
  records[record[identity]] = records[record[identity]].deep_merge(record)
end

Private Instance Methods

identity() click to toggle source
# File lib/locomotive/steam/adapters/memory/dataset.rb, line 71
def identity
  @identity ||= :_id
end