rom-rb/rom-session

View on GitHub
lib/rom-session.rb

Summary

Maintainability
A
0 mins
Test Coverage
# encoding: utf-8

require 'adamantium'
require 'equalizer'
require 'abstract_type'
require 'concord'

require 'rom-relation'
require 'rom-mapper'

module ROM

  # Extended ROM::Environment with session support
  class Environment

    # Start a new session for this environment
    #
    # @example
    #  env.session do |session|
    #    # ...
    #  end
    #
    # @see Session.start
    #
    # @api public
    def session(&block)
      Session.start(self, &block)
    end
  end

  # Session namespace
  class Session

    # Raised when an object is expected to be tracked and it's not
    #
    class ObjectNotTrackedError < StandardError
      def initialize(object)
        super("Tracker doesn't include #{object.inspect}")
      end
    end

  end # Session

end # ROM

require 'charlatan'

require 'rom/session'

require 'rom/session/environment'
require 'rom/session/tracker'
require 'rom/session/identity_map'
require 'rom/session/relation'
require 'rom/session/mapper'

require 'rom/session/state'
require 'rom/session/state/transient'
require 'rom/session/state/persisted'
require 'rom/session/state/created'
require 'rom/session/state/updated'
require 'rom/session/state/deleted'