mirror of https://github.com/tootsuite/mastodon
47 lines
1.8 KiB
Ruby
47 lines
1.8 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
class RemoveLegacyUserSettingsColumns < ActiveRecord::Migration[7.2]
|
|
disable_ddl_transaction!
|
|
|
|
def up
|
|
# In normal usage this should not find anything to delete
|
|
# Deletion here is already done in RemoveLegacyUserSettingsData migration
|
|
# and no data like this should be created from app at this point
|
|
# Deleting again out of caution
|
|
connection.execute(<<~SQL.squish)
|
|
DELETE FROM settings
|
|
WHERE
|
|
thing_type IS NOT NULL
|
|
AND thing_id IS NOT NULL
|
|
SQL
|
|
|
|
# When running these migrations on mastodon.social, we saw 'notification_emails'
|
|
# and 'interactions' records that were not associated to a user and caused a
|
|
# migration issue.
|
|
# While I have not been able to pinpoint the exact cause of the issue, it is likely
|
|
# related to the settings system changes made in b11fdc3ae3f90731c01149a5a36dc64e065d4ea2.
|
|
# So, delete a few user settings that should already have been deleted.
|
|
connection.execute(<<~SQL.squish)
|
|
DELETE FROM settings
|
|
WHERE var IN (
|
|
'notification_emails', 'interactions', 'boost_modal', 'auto_play_gif',
|
|
'delete_modal', 'system_font_ui', 'default_sensitive', 'unfollow_modal',
|
|
'reduce_motion', 'display_sensitive_media', 'hide_network', 'expand_spoilers',
|
|
'display_media', 'aggregate_reblogs', 'show_application', 'advanced_layout',
|
|
'use_blurhash', 'use_pending_items')
|
|
SQL
|
|
|
|
add_index :settings, :var, unique: true, algorithm: :concurrently
|
|
remove_index :settings, [:thing_type, :thing_id, :var], name: :index_settings_on_thing_type_and_thing_id_and_var, unique: true
|
|
|
|
safety_assured do
|
|
remove_column :settings, :thing_type, :string
|
|
remove_column :settings, :thing_id, :bigint
|
|
end
|
|
end
|
|
|
|
def down
|
|
raise ActiveRecord::IrreversibleMigration
|
|
end
|
|
end
|