included_columns << [:deprecated_preview_cards, :id] if table_exists?(:deprecated_preview_cards)
# Print out a warning that this will probably take a while.
- say ''
- say 'WARNING: This migration may take a *long* time for large instances'
- say 'It will *not* lock tables for any significant time, but it may run'
- say 'for a very long time. We will pause for 10 seconds to allow you to'
- say 'interrupt this migration if you are not ready.'
- say ''
- say 'This migration has some sections that can be safely interrupted'
- say 'and restarted later, and will tell you when those are occurring.'
- say ''
- say 'For more information, see https://github.com/tootsuite/mastodon/pull/5088'
+ if $stdout.isatty
+ say ''
+ say 'WARNING: This migration may take a *long* time for large instances'
+ say 'It will *not* lock tables for any significant time, but it may run'
+ say 'for a very long time. We will pause for 10 seconds to allow you to'
+ say 'interrupt this migration if you are not ready.'
+ say ''
+ say 'This migration has some sections that can be safely interrupted'
+ say 'and restarted later, and will tell you when those are occurring.'
+ say ''
+ say 'For more information, see https://github.com/tootsuite/mastodon/pull/5088'
- 10.downto(1) do |i|
- say "Continuing in #{i} second#{i == 1 ? '' : 's'}...", true
- sleep 1
+ 10.downto(1) do |i|
+ say "Continuing in #{i} second#{i == 1 ? '' : 's'}...", true
+ sleep 1
+ end
end
tables = included_columns.map(&:first).uniq
disable_ddl_transaction!
def up
- say ''
- say 'WARNING: This migration may take a *long* time for large instances'
- say 'It will *not* lock tables for any significant time, but it may run'
- say 'for a very long time. We will pause for 10 seconds to allow you to'
- say 'interrupt this migration if you are not ready.'
- say ''
- say 'This migration will irreversibly delete user accounts with duplicate'
- say 'usernames. You may use the `rake mastodon:maintenance:find_duplicate_usernames`'
- say 'task to manually deal with such accounts before running this migration.'
-
- 10.downto(1) do |i|
- say "Continuing in #{i} second#{i == 1 ? '' : 's'}...", true
- sleep 1
+ if $stdout.isatty
+ say ''
+ say 'WARNING: This migration may take a *long* time for large instances'
+ say 'It will *not* lock tables for any significant time, but it may run'
+ say 'for a very long time. We will pause for 10 seconds to allow you to'
+ say 'interrupt this migration if you are not ready.'
+ say ''
+ say 'This migration will irreversibly delete user accounts with duplicate'
+ say 'usernames. You may use the `rake mastodon:maintenance:find_duplicate_usernames`'
+ say 'task to manually deal with such accounts before running this migration.'
+
+ 10.downto(1) do |i|
+ say "Continuing in #{i} second#{i == 1 ? '' : 's'}...", true
+ sleep 1
+ end
end
duplicates = Account.connection.select_all('SELECT string_agg(id::text, \',\') AS ids FROM accounts GROUP BY lower(username), lower(domain) HAVING count(*) > 1').to_hash
end
def up
- say ''
- say 'WARNING: This migration may take a *long* time for large instances'
- say 'It will *not* lock tables for any significant time, but it may run'
- say 'for a very long time. We will pause for 10 seconds to allow you to'
- say 'interrupt this migration if you are not ready.'
- say ''
-
- 10.downto(1) do |i|
- say "Continuing in #{i} second#{i == 1 ? '' : 's'}...", true
- sleep 1
+ if $stdout.isatty
+ say ''
+ say 'WARNING: This migration may take a *long* time for large instances'
+ say 'It will *not* lock tables for any significant time, but it may run'
+ say 'for a very long time. We will pause for 10 seconds to allow you to'
+ say 'interrupt this migration if you are not ready.'
+ say ''
+
+ 10.downto(1) do |i|
+ say "Continuing in #{i} second#{i == 1 ? '' : 's'}...", true
+ sleep 1
+ end
end
migrated = 0