class MoneyTracking::DataStore::FileStore::Record

Public Class Methods

list(dir) click to toggle source
# File lib/money_tracking/data_store/file_store.rb, line 39
def self.list(dir)
  Dir["#{dir}/*.yml"]
    .map { |path| File.basename(path, ".yml") }
    .map { |id| new(dir).load(id) }
end

Public Instance Methods

delete() click to toggle source
# File lib/money_tracking/data_store/file_store.rb, line 65
def delete
  File.delete(filename)
end
id() click to toggle source
# File lib/money_tracking/data_store/file_store.rb, line 45
def id
  @id ||= SecureRandom.hex(4)
end
load(id) click to toggle source
# File lib/money_tracking/data_store/file_store.rb, line 49
def load(id)
  @id = id
  self.fields = YAML.load_file(filename).merge(id: id)
  self
end
save() click to toggle source
# File lib/money_tracking/data_store/file_store.rb, line 55
def save
  File.open(filename, "w") { |f| f.write(to_yaml) }
  self
end
update(fields) click to toggle source
# File lib/money_tracking/data_store/file_store.rb, line 60
def update(fields)
  self.fields = fields
  save
end

Private Instance Methods

filename() click to toggle source
# File lib/money_tracking/data_store/file_store.rb, line 75
def filename
  "#{dir}/#{id}.yml"
end
to_yaml() click to toggle source
# File lib/money_tracking/data_store/file_store.rb, line 71
def to_yaml
  fields.to_yaml
end