nas/lib/tasks/dangerous.rake
KMY(雪あすか) ff2860d0df
Change: #591 ホワイトリストのドメイン一覧の保存先・画面変更 (#689)
* Change: #591 ホワイトリストのドメイン一覧の保存先・画面変更

* Update account_batch.rb

* 表示まわりを改善

* Update dangerous.rake
2024-04-03 12:09:43 +09:00

227 lines
7.5 KiB
Ruby

# frozen_string_literal: true
# rubocop:disable all
namespace :dangerous do
task :back_upstream do
require './config/environment'
prompt = TTY::Prompt.new
unless ENV['BACK_UPSTREAM_FORCE']
exit(0) unless prompt.yes?('[1/3] Do you really want to go back to the original Mastodon?', default: false)
exit(0) unless prompt.yes?('[2/3] All proprietary data of kmyblue will be deleted and cannot be restored. Are you sure?', default: false)
exit(0) unless prompt.yes?('[3/3] This operation is irreversible. You have backups in case this operation causes a system malfunction, do you not?', default: false)
end
target_migrations = %w(
20231022074913
20231021005339
20230314120530
20240109035435
20231214225249
20231212225737
20231130083634
20231130031209
20231115001356
20231105225839
20231028005948
20231028004612
20231023083359
20231009235215
20231007090808
20231006030102
20231005074832
20231001050733
20231001031337
20230930233930
20230923103430
20230919232836
20230911022527
20230826023400
20230821061713
20230819084858
20230812130612
20230812083752
20230804222017
20230714004824
20230706031715
20230705232953
20230522093135
20230522082252
20230521122642
20230514030455
20230512122757
20230510033040
20230510004621
20230510000439
20230509045358
20230430110057
20230428111230
20230427233749
20230427122753
20230427072650
20230427022606
20230426013738
20230423233429
20230423002728
20230420081634
20230414010523
20230412073021
20230412005311
20230410004651
20230406041523
20230405121625
20230405121613
20230320234918
20230314121142
20230314081013
20230314021909
20230308061833
20230223102416
20230222232121
20240117021025
20240117022353
20240121231131
20240212224800
20240212230358
20240216042730
20240217022038
20240217093511
20240217230006
20240218233621
20240227033337
20240227222450
20240227225017
20240229233617
20240312230204
20240320231633
20240326231854
20240327234026
20240401222541
)
# Removed: account_groups
target_tables = %w(
antennas
antenna_accounts
antenna_domains
antenna_tags
bookmark_categories
bookmark_category_statuses
circles
circle_accounts
circle_statuses
emoji_reactions
friend_domains
instance_infos
list_statuses
ng_rules
ng_rule_histories
ngword_histories
ng_words
pending_follow_requests
pending_statuses
scheduled_expiration_statuses
sensitive_words
specified_domains
status_capability_tokens
status_references
)
target_table_columns = [
# Removed: accounts dissubscribable
# Removed: accounts group_allow_private_message
# Removed: accounts group_message_following_only
%w(accounts master_settings),
%w(accounts remote_pending),
%w(accounts searchability),
%w(accounts settings),
# Removed: accounts stop_emoji_reaction_streaming
# Removed: account_stats group_activitypub_count
%w(account_statuses_cleanup_policies keep_self_emoji),
%w(account_statuses_cleanup_policies min_emojis),
%w(conversations ancestor_status_id),
%w(conversations inbox_url),
%w(custom_emojis aliases),
%w(custom_emojis image_height),
%w(custom_emojis image_width),
%w(custom_emojis is_sensitive),
%w(custom_emojis license),
%w(custom_filters exclude_follows),
%w(custom_filters exclude_localusers),
%w(custom_filters with_quote),
%w(domain_blocks block_trends),
%w(domain_blocks detect_invalid_subscription),
%w(domain_blocks hidden),
# Removed: domain_blocks hidden_anonymous
%w(domain_blocks reject_favourite),
%w(domain_blocks reject_friend),
%w(domain_blocks reject_hashtag),
%w(domain_blocks reject_new_follow),
# Removed: domain_blocks reject_reply
%w(domain_blocks reject_reply_exclude_followers),
# Removed: domain_blocks reject_send_dissubscribable
# Removed: domain_blocks reject_send_media
# Removed: domain_blocks reject_send_not_public_searchability
# Removed: domain_blocks reject_send_public_unlisted
# Removed: domain_blocks reject_send_unlisted_dissubscribable
%w(domain_blocks reject_send_sensitive),
%w(domain_blocks reject_straight_follow),
%w(favourites uri),
%w(lists notify),
%w(statuses limited_scope),
%w(statuses markdown),
%w(statuses quote_of_id),
%w(statuses searchability),
%w(status_edits markdown),
%w(status_stats emoji_reactions),
%w(status_stats emoji_reactions_count),
%w(status_stats emoji_reaction_accounts_count),
%w(status_stats status_referred_by_count),
# Removed: status_stats test
]
target_indices = %w(
index_statuses_on_url
index_statuses_on_conversation_id
index_preview_cards_vacuum
index_media_attachments_vacuum
)
prompt.say 'Processing...'
ActiveRecord::Base.connection.execute('UPDATE statuses SET visibility = 1 WHERE visibility IN (10, 11)')
ActiveRecord::Base.connection.execute('UPDATE custom_filters SET action = 0 WHERE action = 2')
ActiveRecord::Base.connection.execute('UPDATE account_warnings SET action = 1250 WHERE action = 1200')
ActiveRecord::Base.connection.execute('CREATE INDEX IF NOT EXISTS index_statuses_local_20190824 ON statuses USING btree (id DESC, account_id) WHERE (local OR (uri IS NULL)) AND deleted_at IS NULL AND visibility = 0 AND reblog_of_id IS NULL AND ((NOT reply) OR (in_reply_to_account_id = account_id))')
ActiveRecord::Base.connection.execute('CREATE INDEX IF NOT EXISTS index_statuses_public_20200119 ON statuses USING btree (id DESC, account_id) WHERE deleted_at IS NULL AND visibility = 0 AND reblog_of_id IS NULL AND ((NOT reply) OR (in_reply_to_account_id = account_id))')
ActiveRecord::Base.connection.execute('DROP INDEX IF EXISTS index_statuses_local_20231213')
ActiveRecord::Base.connection.execute('DROP INDEX IF EXISTS index_statuses_public_20231213')
ActiveRecord::Base.connection.execute('ALTER TABLE ONLY custom_filter_keywords ALTER COLUMN whole_word SET DEFAULT true')
prompt.ok 'Proceed'
prompt.say 'Removing migration histories...'
ActiveRecord::Base.connection.execute("DELETE FROM schema_migrations WHERE version IN ('#{target_migrations.join("','")}')")
prompt.ok 'Removed'
prompt.say 'Removing tables...'
target_tables.each do |table_name|
ActiveRecord::Base.connection.execute("DROP TABLE IF EXISTS #{table_name} CASCADE")
end
prompt.ok 'Removed'
prompt.say 'Removing table columns...'
target_table_columns.each do |table_name, column_name|
ActiveRecord::Base.connection.execute("ALTER TABLE #{table_name} DROP COLUMN IF EXISTS #{column_name}")
end
prompt.ok 'Removed'
prompt.say 'Removing indices...'
target_indices.each do |index_name|
ActiveRecord::Base.connection.execute("DROP INDEX IF EXISTS #{index_name}")
end
prompt.ok 'Removed'
prompt.ok 'Done!'
prompt.say "\n"
prompt.ok 'Thanks for using kmyblue. Good bye!'
end
end
# rubocop:enable all