Class: Canistor::Storage::Objects

Inherits:
Object
  • Object
show all
Defined in:
lib/canistor/storage/objects.rb

Overview

Manages a lookup table of versioned objects.

Instance Method Summary collapse

Constructor Details

#initialize(versioned: true) ⇒ Objects

Returns a new instance of Objects.



7
8
9
10
# File 'lib/canistor/storage/objects.rb', line 7

def initialize(versioned: true)
  @versioned = versioned
  @objects = {}
end

Instance Method Details

#[](key) ⇒ Object



16
17
18
19
20
# File 'lib/canistor/storage/objects.rb', line 16

def [](key)
  if stack = @objects[key]
    stack.last
  end
end

#[]=(key, object) ⇒ Object



22
23
24
25
26
27
28
29
# File 'lib/canistor/storage/objects.rb', line 22

def []=(key, object)
  @objects[key] ||= []
  if versioned?
    @objects[key].push(object)
  else
    @objects[key] = [object]
  end
end

#delete(key) ⇒ Object



31
32
33
34
35
36
37
# File 'lib/canistor/storage/objects.rb', line 31

def delete(key)
  if versioned?
    self[key] = Canistor::Storage::DeleteMarker.new
  else
    @objects.delete(key).last
  end
end

#dig(*segments) ⇒ Object



39
40
41
# File 'lib/canistor/storage/objects.rb', line 39

def dig(*segments)
  @objects.dig(*segments)&.last
end

#eachObject



43
44
45
46
47
# File 'lib/canistor/storage/objects.rb', line 43

def each
  @objects.each do |key, stack|
    yield [key, stack.last]
  end
end

#versioned?Boolean

Returns:

  • (Boolean)


12
13
14
# File 'lib/canistor/storage/objects.rb', line 12

def versioned?
  @versioned
end