Sha256: ac8609e066042a61d3f05feb8fe9d119f0f0eaf5e04487a2db08213e1fa26c0a

Contents?: true

Size: 855 Bytes

Versions: 1

Compression:

Stored size: 855 Bytes

Contents

module ROM
  class Setup
    class BaseRelationDSL
      attr_reader :env, :name, :header

      def initialize(env, name, &block)
        @env = env
        @name = name
        @header = []
        @repository = nil
        instance_exec(&block)
      end

      def repository(name = nil)
        if @repository
          @repository
        else
          @repository = env[name]
        end
      end

      def attribute(name)
        header << name
      end

      def call
        dataset =
          if adapter.respond_to?(:dataset)
            adapter.dataset(name, header)
          else
            adapter[name]
          end

        base_header = dataset.respond_to?(:header) ? dataset.header : header

        [name, dataset, base_header]
      end

      private

      def adapter
        repository.adapter
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rom-0.5.0 lib/rom/setup/base_relation_dsl.rb