Sha256: b6ce02a1eda7b7a3e7739f125277e0b74628ee8c64ed33d6ca8fe0e9121bcaae

Contents?: true

Size: 1.91 KB

Versions: 16

Compression:

Stored size: 1.91 KB

Contents

module ActiveRecord #:nodoc:
  module ConnectionAdapters #:nodoc:
    module OracleEnhanced #:nodoc:
      module ColumnDumper #:nodoc:

        def column_spec(column)
          spec = Hash[prepare_column_options(column).map { |k, v| [k, "#{k}: #{v}"] }]
          spec[:name] = column.name.inspect
          if column.virtual?
            spec[:type] = "virtual"
          else
            spec[:type] = schema_type(column).to_s
          end
          spec
        end

        def prepare_column_options(column)
          spec = {}

          if limit = schema_limit(column)
            spec[:limit] = limit
          end

          if precision = schema_precision(column)
            spec[:precision] = precision
          end

          if scale = schema_scale(column)
            spec[:scale] = scale
          end

          if virtual_as = schema_virtual_as(column)
            spec[:as] = virtual_as
          end

          if virtual_type = schema_virtual_type(column)
            spec[:virtual_type] = virtual_type
          end

          default = schema_default(column) if column.has_default?
          spec[:default]   = default unless default.nil?

          spec[:null] = 'false' unless column.null

          spec[:comment] = column.comment.inspect if column.comment.present?

          spec
        end

        def migration_keys
          # TODO `& column_specs.map(&:keys).flatten` should be exetuted here
          [:name, :limit, :precision, :scale, :default, :null, :as, :virtual_type, :comment]
        end

        private

        def schema_virtual_as(column)
          column.virtual_column_data_default if column.virtual?
        end

        def schema_virtual_type(column)
          unless column.type == :decimal
            column.type.inspect if column.virtual?
          end
        end

      end
    end
  end

  module ColumnDumper #:nodoc:
    prepend ConnectionAdapters::OracleEnhanced::ColumnDumper
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
activerecord-oracle_enhanced-adapter-1.7.7 lib/active_record/connection_adapters/oracle_enhanced/column_dumper.rb
activerecord-oracle_enhanced-adapter-1.7.6 lib/active_record/connection_adapters/oracle_enhanced/column_dumper.rb
activerecord-oracle_enhanced-adapter-1.7.5 lib/active_record/connection_adapters/oracle_enhanced/column_dumper.rb
activerecord-oracle_enhanced-adapter-1.7.4 lib/active_record/connection_adapters/oracle_enhanced/column_dumper.rb
activerecord-oracle_enhanced-adapter-1.7.3 lib/active_record/connection_adapters/oracle_enhanced/column_dumper.rb
activerecord-oracle_enhanced-adapter-1.7.2 lib/active_record/connection_adapters/oracle_enhanced/column_dumper.rb
activerecord-oracle_enhanced-adapter-1.7.1 lib/active_record/connection_adapters/oracle_enhanced/column_dumper.rb
activerecord-oracle_enhanced-adapter-1.7.0 lib/active_record/connection_adapters/oracle_enhanced/column_dumper.rb
activerecord-oracle_enhanced-adapter-1.7.0.rc1 lib/active_record/connection_adapters/oracle_enhanced/column_dumper.rb
activerecord-oracle_enhanced-adapter-1.7.0.beta7 lib/active_record/connection_adapters/oracle_enhanced/column_dumper.rb
activerecord-oracle_enhanced-adapter-1.7.0.beta6 lib/active_record/connection_adapters/oracle_enhanced/column_dumper.rb
activerecord-oracle_enhanced-adapter-1.7.0.beta5 lib/active_record/connection_adapters/oracle_enhanced/column_dumper.rb
activerecord-oracle_enhanced-adapter-1.7.0.beta4 lib/active_record/connection_adapters/oracle_enhanced/column_dumper.rb
activerecord-oracle_enhanced-adapter-1.7.0.beta3 lib/active_record/connection_adapters/oracle_enhanced/column_dumper.rb
activerecord-oracle_enhanced-adapter-1.7.0.beta2 lib/active_record/connection_adapters/oracle_enhanced/column_dumper.rb
activerecord-oracle_enhanced-adapter-1.7.0.beta1 lib/active_record/connection_adapters/oracle_enhanced/column_dumper.rb