class Canistor::Storage::Objects

Manages a lookup table of versioned objects.

Public Class Methods

new(versioned: true) click to toggle source
# File lib/canistor/storage/objects.rb, line 7
def initialize(versioned: true)
  @versioned = versioned
  @objects = {}
end

Public Instance Methods

[](key) click to toggle source
# File lib/canistor/storage/objects.rb, line 16
def [](key)
  if stack = @objects[key]
    stack.last
  end
end
[]=(key, object) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# File lib/canistor/storage/objects.rb, line 39
def dig(*segments)
  @objects.dig(*segments)&.last
end
each() { |key, last| ... } click to toggle source
# File lib/canistor/storage/objects.rb, line 43
def each
  @objects.each do |key, stack|
    yield [key, stack.last]
  end
end
versioned?() click to toggle source
# File lib/canistor/storage/objects.rb, line 12
def versioned?
  @versioned
end