class ROM::Session::Tracker

@api private

Attributes

changelog[R]
objects[R]

Public Class Methods

new() click to toggle source

@api private

# File lib/rom/session/tracker.rb, line 12
def initialize
  @objects   = {}
  @changelog = []
end

Public Instance Methods

clean?() click to toggle source

@api private

# File lib/rom/session/tracker.rb, line 34
def clean?
  changelog.empty?
end
commit() click to toggle source

@api private

# File lib/rom/session/tracker.rb, line 18
def commit
  @changelog.each { |state| update(state.commit) }
  @changelog = []
end
fetch(object) click to toggle source

@api private

# File lib/rom/session/tracker.rb, line 24
def fetch(object)
  @objects.fetch(object.__id__) { raise ObjectNotTrackedError, object }
end
include?(object) click to toggle source

@api private

# File lib/rom/session/tracker.rb, line 29
def include?(object)
  @objects.key?(object.__id__)
end
queue(state) click to toggle source

@api private

# File lib/rom/session/tracker.rb, line 39
def queue(state)
  @changelog << state
  update(state)
end
store_persisted(object, mapper) click to toggle source

@api private

# File lib/rom/session/tracker.rb, line 55
def store_persisted(object, mapper)
  store(object, State::Persisted.new(object, mapper))
end
store_transient(object, mapper) click to toggle source

@api private

# File lib/rom/session/tracker.rb, line 50
def store_transient(object, mapper)
  store(object, State::Transient.new(object, mapper))
end
update(state) click to toggle source

@api private

# File lib/rom/session/tracker.rb, line 45
def update(state)
  store(state.object, state)
end

Private Instance Methods

store(object, state) click to toggle source

@api private

# File lib/rom/session/tracker.rb, line 62
def store(object, state)
  @objects[object.__id__] = state
end