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