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