Sha256: 7c7e794176eaeff065962655a6555ba0aa2bca642c348ccd2bca8b64b3f7dc1f

Contents?: true

Size: 856 Bytes

Versions: 3

Compression:

Stored size: 856 Bytes

Contents

# encoding: utf-8

module ROM
  class Schema
    class Definition

      # Builder object for Axiom relation
      #
      # @private
      class Relation
        include Equalizer.new(:header, :keys)

        # @api private
        def initialize(&block)
          @header = []
          @keys   = []
          instance_eval(&block)
        end

        # @api private
        def call(name)
          Axiom::Relation::Base.new(name, header)
        end

        # @api private
        def header
          Axiom::Relation::Header.coerce(@header, keys: @keys)
        end

        # @api private
        def attribute(name, type)
          @header << [name, type]
        end

        # @api private
        def key(*attribute_names)
          @keys.concat(attribute_names)
        end

      end # Relation

    end # Definition
  end # Schema
end # ROM

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
rom-relation-0.1.2 lib/rom/schema/definition/relation.rb
rom-relation-0.1.1 lib/rom/schema/definition/relation.rb
rom-relation-0.1.0 lib/rom/schema/definition/relation.rb