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!
save!()
Alias for: 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