class Moodwall::Record
Attributes
id[R]
repository[W]
Public Class Methods
all()
click to toggle source
# File lib/moodwall/record.rb, line 17 def all transaction(read_only: true) do |store| Array store[name] end end
find!(id)
click to toggle source
# File lib/moodwall/record.rb, line 29 def find!(id) all.find { |r| r.id == id.to_i } || raise(RecordNotFoundError, "Can't find the record with id: #{ id }") end
next_id()
click to toggle source
# File lib/moodwall/record.rb, line 34 def next_id all.map(&:id).max.to_i + 1 end
repository()
click to toggle source
# File lib/moodwall/record.rb, line 13 def repository Thread.current[:repository] ||= PStore.new("database.store") end
reset()
click to toggle source
# File lib/moodwall/record.rb, line 23 def reset transaction do |store| store.delete name end end
transaction(read_only: false, &transaction_body)
click to toggle source
# File lib/moodwall/record.rb, line 38 def transaction(read_only: false, &transaction_body) repository.transaction(read_only, &transaction_body) end
Public Instance Methods
==(other)
click to toggle source
# File lib/moodwall/record.rb, line 43 def ==(other) id == other.id end
delete()
click to toggle source
# File lib/moodwall/record.rb, line 65 def delete self.class.repository.transaction do |store| Array(store[self.class.name]).delete self end self end
new_record?()
click to toggle source
# File lib/moodwall/record.rb, line 72 def new_record? @id.nil? end
reload()
click to toggle source
# File lib/moodwall/record.rb, line 76 def reload self.class.find! @id end
save()
click to toggle source
# File lib/moodwall/record.rb, line 47 def save if new_record? @id = self.class.next_id transaction do |store| store[self.class.name] ||= [] store[self.class.name] << self end else transaction do |store| store[self.class.name].delete_if { |r| r.id == @id } store[self.class.name] << self end end self end
Also aliased as: save!
Private Instance Methods
transaction(**options, &transaction_body)
click to toggle source
# File lib/moodwall/record.rb, line 82 def transaction(**options, &transaction_body) self.class.transaction(**options, &transaction_body) end