class TooDoo::Store
Store
is intended to build connection with db and provide api for the application it saves database file into user's home directory /home/user/.toodoo.db by default
Constants
- DATABASE_PATH
Attributes
adapter[R]
path[R]
Public Class Methods
new(db_file_path = DATABASE_PATH, adapter = DBM)
click to toggle source
# File lib/toodoo/store.rb, line 13 def initialize(db_file_path = DATABASE_PATH, adapter = DBM) @path = db_file_path @adapter = adapter end
Public Instance Methods
all()
click to toggle source
# File lib/toodoo/store.rb, line 18 def all connection do |db| db.values.each_with_object([]) do |marsh_task, tasks| tasks << restore(marsh_task) end end end
done()
click to toggle source
# File lib/toodoo/store.rb, line 30 def done all.select(&:done?) end
find(body)
click to toggle source
# File lib/toodoo/store.rb, line 34 def find(body) connection do |db| result = db[body] restore(db[body]) unless result.nil? end end
remove(body)
click to toggle source
# File lib/toodoo/store.rb, line 51 def remove(body) connection do |db| result = db.delete(body) restore(result) unless result.nil? end end
remove_all()
click to toggle source
# File lib/toodoo/store.rb, line 58 def remove_all connection(&:clear) end
save(task)
click to toggle source
# File lib/toodoo/store.rb, line 41 def save(task) raise ArgumentError unless task.is_a?(Task) connection do |db| db[task.body] = dump(task) end task end
undone()
click to toggle source
# File lib/toodoo/store.rb, line 26 def undone all.reject(&:done?) end
Private Instance Methods
connection() { |connection| ... }
click to toggle source
# File lib/toodoo/store.rb, line 72 def connection connection = adapter.new(path) result = yield(connection) connection.close result end
dump(task)
click to toggle source
# File lib/toodoo/store.rb, line 64 def dump(task) Marshal.dump(task) end
restore(string)
click to toggle source
# File lib/toodoo/store.rb, line 68 def restore(string) Marshal.restore(string) end