class Paradeiser::Repository
Public Class Methods
active()
click to toggle source
# File lib/paradeiser/models/repository.rb, line 26 def active all_active = find{|pom| pom.active?}.sort{|a,b| a.started_at <=> b.started_at} # Cannot recover from an internal inconsistency. if all_active.size > 1 raise "The repository was corrupted. There are #{all_active.size} active objects, but only one is allowed to be active." end all_active.last end
active?()
click to toggle source
# File lib/paradeiser/models/repository.rb, line 37 def active? !!active end
all()
click to toggle source
# File lib/paradeiser/models/repository.rb, line 4 def all backend.transaction(true) do backend.roots.map{|id| backend[id]} end end
all_breaks()
click to toggle source
# File lib/paradeiser/models/repository.rb, line 14 def all_breaks all.select{|b| b.kind_of?(Break)} end
all_pomodori()
click to toggle source
# File lib/paradeiser/models/repository.rb, line 10 def all_pomodori all.select{|p| p.kind_of?(Pomodoro)} end
any?(&blk)
click to toggle source
# File lib/paradeiser/models/repository.rb, line 18 def any?(&blk) all.any?(&blk) end
find(&blk)
click to toggle source
# File lib/paradeiser/models/repository.rb, line 22 def find(&blk) all.select(&blk) end
last_canceled()
click to toggle source
# File lib/paradeiser/models/repository.rb, line 45 def last_canceled find{|p| p.canceled?}.sort{|a,b| a.started_at <=> b.started_at}.last end
last_finished()
click to toggle source
# File lib/paradeiser/models/repository.rb, line 41 def last_finished find{|p| p.finished?}.sort{|a,b| a.started_at <=> b.started_at}.last end
next_id()
click to toggle source
# File lib/paradeiser/models/repository.rb, line 61 def next_id if all.empty? 1 else all.max{|a, b| a.id <=> b.id}.id.next end end
save(pom)
click to toggle source
# File lib/paradeiser/models/repository.rb, line 49 def save(pom) raise IllegalStatusError if pom.idle? # Do not allow saving of a new active pomodoro while another pomodoro or break is active raise SingletonError.new(pom.class, self.active, :save) if self.active? && pom.new? pom.id = next_id if pom.new? backend.transaction do backend[pom.id] = pom end end
Private Class Methods
backend()
click to toggle source
# File lib/paradeiser/models/repository.rb, line 71 def backend begin @backend ||= PStore.new(File.join(Paradeiser.par_dir, 'repository.pstore'), true) rescue PStore::Error => e raise NotInitializedError.new(e.message) end end