class Store

Public Class Methods

new(name) click to toggle source
# File lib/lazyrecord.rb, line 4
def initialize(name)
  @name = name
  @data = PStore.new("#{@name}.pstore")
  transaction do
    @entities = @data.roots.reject { |entity| entity.include? "current_id" }
  end
end

Public Instance Methods

all(entity_name) click to toggle source
# File lib/lazyrecord.rb, line 41
def all(entity_name)
  transaction do
    @data[entity_name]
  end
end
create_entity(name) click to toggle source
# File lib/lazyrecord.rb, line 12
def create_entity(name)
  transaction do
    if @data[name].nil?
      @data[name] = {}
      @data[current_id_key(name)] = 0
    end
  end

  unless @entities.include? name
    @entities << name
  end
end
current_id_key(entity_name) click to toggle source
# File lib/lazyrecord.rb, line 31
def current_id_key(entity_name)
  "#{entity_name}_current_id"
end
delete(entity_name, id) click to toggle source
# File lib/lazyrecord.rb, line 59
def delete(entity_name, id)
  transaction do
    p @data[entity_name]
  end

  transaction do
    @data[entity_name].delete(id)
  end

  transaction do
    p @data[entity_name]
  end
end
find(entity_name, id) click to toggle source
# File lib/lazyrecord.rb, line 25
def find(entity_name, id)
  transaction do
    @data[entity_name][id]
  end
end
flush!() click to toggle source
# File lib/lazyrecord.rb, line 73
def flush!
  @entities.each do |entity|
    transaction do
      @data.delete(entity)
      @data.delete(current_id_key(entity))
    end
    create_entity(entity)
  end
end
next_id(entity_name) click to toggle source
# File lib/lazyrecord.rb, line 35
def next_id(entity_name)
  transaction do
    @data[current_id_key(entity_name)] += 1
  end
end
save(entity_name, record) click to toggle source
# File lib/lazyrecord.rb, line 53
def save(entity_name, record)
  transaction do
    @data[entity_name][record.id] = record
  end
end
transaction() { || ... } click to toggle source
# File lib/lazyrecord.rb, line 47
def transaction
  @data.transaction do
    yield
  end
end