class Moneymanager::Archiver

Attributes

home_folder[RW]

Public Class Methods

empty_archive() click to toggle source
# File lib/moneymanager/archiver.rb, line 21
def self.empty_archive
  { entries: [],
    tags: [] }
end
new(home_folder = Dir.home) click to toggle source
# File lib/moneymanager/archiver.rb, line 34
def initialize(home_folder = Dir.home)
  self.home_folder = home_folder

  FileUtils.mkdir_p(base_path)
  @db = if File.exist? archive_path
          YAML.load_file(archive_path)
        else
          Archiver.empty_archive
        end
end
reset() click to toggle source
# File lib/moneymanager/archiver.rb, line 26
def self.reset
  File.write(Archiver.archive_path, Archiver.empty_archive.to_yaml)
end

Public Instance Methods

all_bank_transfers() click to toggle source
# File lib/moneymanager/archiver.rb, line 78
def all_bank_transfers
  @db[:entries].sort_by(&:date).select(&:bank_transfer)
end
all_entries() click to toggle source
# File lib/moneymanager/archiver.rb, line 74
def all_entries
  @db[:entries].sort_by(&:date)
end
archive_path() click to toggle source
# File lib/moneymanager/archiver.rb, line 12
def archive_path
  File.join(base_path, 'archive')
end
backup() click to toggle source
# File lib/moneymanager/archiver.rb, line 30
def backup
  File.write(backup_path, @db.to_yaml)
end
backup_path() click to toggle source
# File lib/moneymanager/archiver.rb, line 16
def backup_path
  date_filename = Time.now.to_i.to_s
  File.join(base_path, date_filename)
end
base_path() click to toggle source
# File lib/moneymanager/archiver.rb, line 8
def base_path
  File.join(home_folder, '.moneymanager')
end
delete(entry) click to toggle source
# File lib/moneymanager/archiver.rb, line 68
def delete(entry)
  puts entry
  @db[:entries].delete_if { |obj| obj.digest == entry.digest }
  save
end
save() click to toggle source
# File lib/moneymanager/archiver.rb, line 45
def save
  File.write(archive_path, @db.to_yaml)
end
store(entries) click to toggle source
# File lib/moneymanager/archiver.rb, line 49
def store(entries)
  previous_digest = all_entries.map(&:digest)

  to_insert = entries.reject do |entry|
    previous_digest.include?(entry.digest)
  end
  @db[:entries].concat(to_insert)
  save
  puts "Parsed: #{entries.count}"
  puts "Skipped: #{entries.count - to_insert.count}"
  puts "Inserted: #{to_insert.count}"
end
store_tag(tag) click to toggle source
# File lib/moneymanager/archiver.rb, line 86
def store_tag(tag)
  @db[:tags] << tag
  save
end
tags() click to toggle source
# File lib/moneymanager/archiver.rb, line 82
def tags
  @db[:tags]
end
update(entry) click to toggle source
# File lib/moneymanager/archiver.rb, line 62
def update(entry)
  @db[:entries].delete_if { |obj| obj.digest == entry.digest }
  @db[:entries] << entry
  save
end