Sha256: c5b64dc975603050a417488446b7d63ae4efa312f1e9e1d8d3e7ab384eb71089

Contents?: true

Size: 942 Bytes

Versions: 30

Compression:

Stored size: 942 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 table_exists?

            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

30 entries across 30 versions & 1 rubygems

Version Path
torque-postgresql-3.4.1 lib/torque/postgresql/attributes/builder.rb
torque-postgresql-2.4.5 lib/torque/postgresql/attributes/builder.rb
torque-postgresql-3.4.0 lib/torque/postgresql/attributes/builder.rb
torque-postgresql-3.3.3 lib/torque/postgresql/attributes/builder.rb
torque-postgresql-2.4.4 lib/torque/postgresql/attributes/builder.rb
torque-postgresql-3.3.2 lib/torque/postgresql/attributes/builder.rb
torque-postgresql-2.4.3 lib/torque/postgresql/attributes/builder.rb
torque-postgresql-3.3.1 lib/torque/postgresql/attributes/builder.rb
torque-postgresql-3.3.0 lib/torque/postgresql/attributes/builder.rb
torque-postgresql-3.2.2 lib/torque/postgresql/attributes/builder.rb
torque-postgresql-2.4.2 lib/torque/postgresql/attributes/builder.rb
torque-postgresql-2.4.1 lib/torque/postgresql/attributes/builder.rb
torque-postgresql-3.2.1 lib/torque/postgresql/attributes/builder.rb
torque-postgresql-2.4.0 lib/torque/postgresql/attributes/builder.rb
torque-postgresql-3.2.0 lib/torque/postgresql/attributes/builder.rb
torque-postgresql-3.1.0 lib/torque/postgresql/attributes/builder.rb
torque-postgresql-2.3.0 lib/torque/postgresql/attributes/builder.rb
torque-postgresql-3.0.1 lib/torque/postgresql/attributes/builder.rb
torque-postgresql-2.2.4 lib/torque/postgresql/attributes/builder.rb
torque-postgresql-3.0.0 lib/torque/postgresql/attributes/builder.rb