Sha256: 46e71d596529d4d111d44c1963db89c0ec98a63cbda299fe633c60a4611c2c71

Contents?: true

Size: 923 Bytes

Versions: 41

Compression:

Stored size: 923 Bytes

Contents

# frozen_string_literal: true

require_relative 'base'

module DeclareSchema
  module SchemaChange
    class TableChange < Base
      def initialize(table_name, old_options, new_options)
        @table_name = table_name
        @old_options = old_options
        @new_options = new_options
      end

      def up_command
        alter_table(@table_name, @new_options)
      end

      def down_command
        alter_table(@table_name, @old_options)
      end

      private

      TABLE_OPTIONS_TO_SQL_MAPPINGS = {
        charset:   'CHARACTER SET',
        collation: 'COLLATE'
      }.freeze

      def alter_table(table_name, options)
        sql_options = options.map { |key, value| [TABLE_OPTIONS_TO_SQL_MAPPINGS[key], value] }
        statement = "ALTER TABLE #{ActiveRecord::Base.connection.quote_table_name(table_name)} #{sql_options.join(' ')}"
        "execute #{statement.inspect}"
      end
    end
  end
end

Version data entries

41 entries across 41 versions & 1 rubygems

Version Path
declare_schema-1.3.1 lib/declare_schema/schema_change/table_change.rb
declare_schema-1.3.1.colin.1 lib/declare_schema/schema_change/table_change.rb
declare_schema-1.3.0 lib/declare_schema/schema_change/table_change.rb
declare_schema-1.3.0.colin.1 lib/declare_schema/schema_change/table_change.rb
declare_schema-1.2.3 lib/declare_schema/schema_change/table_change.rb
declare_schema-1.2.3.pre.ga.11 lib/declare_schema/schema_change/table_change.rb
declare_schema-1.2.3.pre.ga.10 lib/declare_schema/schema_change/table_change.rb
declare_schema-1.2.3.pre.ga.9 lib/declare_schema/schema_change/table_change.rb
declare_schema-1.2.3.pre.ga.8 lib/declare_schema/schema_change/table_change.rb
declare_schema-1.2.3.pre.ga.7 lib/declare_schema/schema_change/table_change.rb
declare_schema-1.2.3.pre.ga.6 lib/declare_schema/schema_change/table_change.rb
declare_schema-1.2.3.pre.ga.5 lib/declare_schema/schema_change/table_change.rb
declare_schema-1.2.3.pre.ga.4 lib/declare_schema/schema_change/table_change.rb
declare_schema-1.2.3.pre.ga.2 lib/declare_schema/schema_change/table_change.rb
declare_schema-1.2.3.pre.ga.1 lib/declare_schema/schema_change/table_change.rb
declare_schema-1.2.3.pre.ga.0 lib/declare_schema/schema_change/table_change.rb
declare_schema-1.2.2 lib/declare_schema/schema_change/table_change.rb
declare_schema-1.2.2.pre.0 lib/declare_schema/schema_change/table_change.rb
declare_schema-1.2.1 lib/declare_schema/schema_change/table_change.rb
declare_schema-1.2.0 lib/declare_schema/schema_change/table_change.rb