Sha256: 71b098c4cd98c5dad5f77923412ce1689a5ec50df5bd04d033b0ca28253b07be

Contents?: true

Size: 965 Bytes

Versions: 1

Compression:

Stored size: 965 Bytes

Contents

# frozen_string_literal: true

require_relative 'builder/enum'
require_relative 'builder/period'

module Torque
  module PostgreSQL
    module Attributes
      module Builder
        def self.include_on(klass, method_name, builder_klass, **extra, &block)
          klass.define_singleton_method(method_name) do |*args, **options|
            return unless connection.table_exists?(table_name)

            args.each do |attribute|
              begin
                # Generate methods on self class
                builder = builder_klass.new(self, attribute, extra.merge(options))
                builder.conflicting?
                builder.build

                # Additional settings for the builder
                instance_exec(builder, &block) if block.present?
              rescue Interrupt
                # Not able to build the attribute, maybe pending migrations
              end
            end
          end
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
torque-postgresql-2.0.4 lib/torque/postgresql/attributes/builder.rb