mirror of
https://gitlab.com/gitlab-org/gitlab-foss.git
synced 2025-08-03 16:04:30 +00:00
50 lines
1.7 KiB
Ruby
50 lines
1.7 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module Gitlab
|
|
module Database
|
|
module MigrationHelpers
|
|
module Swapping
|
|
include ::Gitlab::Database::SchemaHelpers
|
|
include ::Gitlab::Database::MigrationHelpers::V2
|
|
|
|
def swap_columns(table, column1, column2)
|
|
::Gitlab::Database::Migrations::SwapColumns.new(
|
|
migration_context: self,
|
|
table: table,
|
|
column1: column1,
|
|
column2: column2
|
|
).execute
|
|
end
|
|
|
|
def swap_columns_default(table, column1, column2)
|
|
::Gitlab::Database::Migrations::SwapColumnsDefault.new(
|
|
migration_context: self,
|
|
table: table,
|
|
column1: column1,
|
|
column2: column2
|
|
).execute
|
|
end
|
|
|
|
def swap_foreign_keys(table, foreign_key1, foreign_key2)
|
|
rename_constraint(table, foreign_key1, :temp_name_for_renaming)
|
|
rename_constraint(table, foreign_key2, foreign_key1)
|
|
rename_constraint(table, :temp_name_for_renaming, foreign_key2)
|
|
end
|
|
|
|
def swap_indexes(table, index1, index2, schema: nil)
|
|
identifier = "index_#{index1}_on_#{table}"
|
|
# Check Gitlab::Database::MigrationHelpers#concurrent_foreign_key_name()
|
|
# for info on why we use a hash
|
|
hashed_identifier = Digest::SHA256.hexdigest(identifier).first(10)
|
|
|
|
temp_index = "temp_#{hashed_identifier}"
|
|
|
|
rename_index_with_schema(table, index1, temp_index, schema: schema)
|
|
rename_index_with_schema(table, index2, index1, schema: schema)
|
|
rename_index_with_schema(table, temp_index, index2, schema: schema)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|