2020-01-31 15:08:42 +00:00
# frozen_string_literal: true
class RemoveAnalyticsRepositoryTableFksOnProjects < ActiveRecord :: Migration [ 5 . 2 ]
include Gitlab :: Database :: MigrationHelpers
DOWNTIME = false
2020-10-06 09:08:32 +00:00
disable_ddl_transaction!
2020-01-31 15:08:42 +00:00
def up
2020-10-06 09:08:32 +00:00
# Requires ExclusiveLock on all tables. analytics_* tables are empty
2020-01-31 15:08:42 +00:00
with_lock_retries do
2020-10-06 09:08:32 +00:00
remove_foreign_key_if_exists ( :analytics_repository_files , :projects )
2020-01-31 15:08:42 +00:00
end
with_lock_retries do
2020-10-06 09:08:32 +00:00
remove_foreign_key_if_exists ( :analytics_repository_file_edits , :projects ) if table_exists? ( :analytics_repository_file_edits ) # this table might be already dropped on development environment
2020-01-31 15:08:42 +00:00
end
2020-10-06 09:08:32 +00:00
with_lock_retries do
remove_foreign_key_if_exists ( :analytics_repository_file_commits , :projects )
end
end
def down
add_concurrent_foreign_key ( :analytics_repository_files , :projects , column : :project_id , on_delete : :cascade )
add_concurrent_foreign_key ( :analytics_repository_file_edits , :projects , column : :project_id , on_delete : :cascade )
add_concurrent_foreign_key ( :analytics_repository_file_commits , :projects , column : :project_id , on_delete : :cascade )
2020-01-31 15:08:42 +00:00
end
end