Class: Donjon::Database

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/donjon/database.rb

Instance Method Summary collapse

Constructor Details

#initialize(actor:) ⇒ Database

Returns a new instance of Database.



8
9
10
# File 'lib/donjon/database.rb', line 8

def initialize(actor:)
  @actor = actor
end

Instance Method Details

#[](key) ⇒ Object



12
13
14
15
16
17
18
# File 'lib/donjon/database.rb', line 12

def [](key)
  file = _file(key)
  return unless file.readable? 
  _key, value = _unpack(file.read)
  assert(key == _key, "bad stored data for #{key}!")
  return value
end

#[]=(key, value) ⇒ Object



20
21
22
23
24
25
26
# File 'lib/donjon/database.rb', line 20

def []=(key, value)
  if value.nil?
    _file(key).write(nil)
  else
    _file(key).write(_pack(key, value))
  end
end

#eachObject



28
29
30
31
32
33
34
35
36
37
# File 'lib/donjon/database.rb', line 28

def each
  parent = @actor.repo.join('data')
  return unless parent.exist?
  parent.children.each do |child|
    path = "data/#{child.basename}"
    file = EncryptedFile.new(path: path, actor: @actor)
    next unless file.readable?
    yield *_unpack(file.read)
  end
end

#updateObject



39
40
41
42
43
44
# File 'lib/donjon/database.rb', line 39

def update
  each do |key, value|
    self[key] = value
  end
  nil
end