Sha256: 0da920d5f202203071cea1bfd179a4d6717e11d3ebd415f0ca9d056675d81271
Contents?: true
Size: 1009 Bytes
Versions: 62
Compression:
Stored size: 1009 Bytes
Contents
# frozen_string_literal: true require_relative 'base' module DeclareSchema module SchemaChange class PrimaryKeyChange < Base def initialize(table_name, old_column_names, new_column_names) @table_name = table_name @old_column_names = old_column_names.presence @new_column_names = new_column_names.presence end def up_command alter_primary_key(@old_column_names, @new_column_names) end def down_command alter_primary_key(@new_column_names, @old_column_names) end private def alter_primary_key(old_col_names, new_col_names) drop_command = "DROP PRIMARY KEY" if old_col_names add_command = "ADD PRIMARY KEY (#{new_col_names.join(', ')})" if new_col_names commands = [drop_command, add_command].compact.join(', ') statement = "ALTER TABLE #{ActiveRecord::Base.connection.quote_table_name(@table_name)} #{commands}" "execute #{statement.inspect}" end end end end
Version data entries
62 entries across 62 versions & 1 rubygems