Sha256: c3c511c841204f9aa43d76e0aad1284f3daa397cec48349798103aacdb0c13f4

Contents?: true

Size: 953 Bytes

Versions: 4

Compression:

Stored size: 953 Bytes

Contents

# frozen_string_literal: true

module ROM
  class Repository
    # @api private
    class RelationReader < Module
      # @api private
      attr_reader :klass

      # @api private
      attr_reader :relations

      module InstanceMethods
        # @api private
        def set_relation(name)
          container
            .relations[name]
            .with(auto_struct: auto_struct)
            .struct_namespace(struct_namespace)
        end
      end

      # @api private
      def initialize(klass, relations)
        @klass = klass
        @relations = relations
        define_readers!
      end

      # @api private
      def included(klass)
        super
        klass.include(InstanceMethods)
      end

      private

      # @api private
      def define_readers!
        relations.each do |name|
          define_method(name) do
            @relations[name] ||= set_relation(name)
          end
        end
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 2 rubygems

Version Path
rom-repository-5.3.0 lib/rom/repository/relation_reader.rb
rom-6.0.0.alpha1 lib/rom/repository/relation_reader.rb
rom-repository-5.2.2 lib/rom/repository/relation_reader.rb
rom-repository-5.2.1 lib/rom/repository/relation_reader.rb