Sha256: 9d5a84a78beec32226bb7d2dbb44923a49bcf2890dc07d830ae304131ca6f5ef

Contents?: true

Size: 851 Bytes

Versions: 14

Compression:

Stored size: 851 Bytes

Contents

# frozen_string_literal: true

module ROM
  module SQL
    # Type DSL used by Types.define method
    #
    # @api public
    class TypeDSL
      attr_reader :definition, :input_constructor, :output_constructor

      # @api private
      def initialize(value_type)
        if value_type.class < ::Dry::Types::Type
          @definition = value_type
        else
          @definition = ::ROM::SQL::Types.Nominal(value_type)
        end
      end

      # @api private
      def call(&block)
        instance_exec(&block)

        definition.constructor(input_constructor)
          .meta(read: definition.constructor(output_constructor))
      end

      # @api private
      def input(&block)
        @input_constructor = block
      end

      # @api private
      def output(&block)
        @output_constructor = block
      end
    end
  end
end

Version data entries

14 entries across 14 versions & 1 rubygems

Version Path
rom-sql-3.6.5 lib/rom/sql/type_dsl.rb
rom-sql-3.6.4 lib/rom/sql/type_dsl.rb
rom-sql-3.6.3 lib/rom/sql/type_dsl.rb
rom-sql-3.6.2 lib/rom/sql/type_dsl.rb
rom-sql-3.6.1 lib/rom/sql/type_dsl.rb
rom-sql-3.6.0 lib/rom/sql/type_dsl.rb
rom-sql-4.0.0.alpha1 lib/rom/sql/type_dsl.rb
rom-sql-3.5.0 lib/rom/sql/type_dsl.rb
rom-sql-3.4.0 lib/rom/sql/type_dsl.rb
rom-sql-3.3.3 lib/rom/sql/type_dsl.rb
rom-sql-3.3.2 lib/rom/sql/type_dsl.rb
rom-sql-3.3.1 lib/rom/sql/type_dsl.rb
rom-sql-3.3.0 lib/rom/sql/type_dsl.rb
rom-sql-3.2.0 lib/rom/sql/type_dsl.rb