Class: MoneyTracking::DataStore::FileStore::Record

Inherits:
Struct
  • Object
show all
Defined in:
lib/money_tracking/data_store/file_store.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.list(dir) ⇒ Object



39
40
41
42
43
# 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

Instance Method Details

#deleteObject



65
66
67
# File 'lib/money_tracking/data_store/file_store.rb', line 65

def delete
  File.delete(filename)
end

#idObject



45
46
47
# File 'lib/money_tracking/data_store/file_store.rb', line 45

def id
  @id ||= SecureRandom.hex(4)
end

#load(id) ⇒ Object



49
50
51
52
53
# 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

#saveObject



55
56
57
58
# 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) ⇒ Object



60
61
62
63
# File 'lib/money_tracking/data_store/file_store.rb', line 60

def update(fields)
  self.fields = fields
  save
end