Merge tag 'v3.1.1' into instance_only_statuses
This commit is contained in:
@ -1,17 +1,19 @@
|
||||
class FixNullBooleans < ActiveRecord::Migration[5.1]
|
||||
def change
|
||||
change_column_default :domain_blocks, :reject_media, false
|
||||
change_column_null :domain_blocks, :reject_media, false, false
|
||||
safety_assured do
|
||||
change_column_default :domain_blocks, :reject_media, false
|
||||
change_column_null :domain_blocks, :reject_media, false, false
|
||||
|
||||
change_column_default :imports, :approved, false
|
||||
change_column_null :imports, :approved, false, false
|
||||
change_column_default :imports, :approved, false
|
||||
change_column_null :imports, :approved, false, false
|
||||
|
||||
change_column_null :statuses, :sensitive, false, false
|
||||
change_column_null :statuses, :reply, false, false
|
||||
change_column_null :statuses, :sensitive, false, false
|
||||
change_column_null :statuses, :reply, false, false
|
||||
|
||||
change_column_null :users, :admin, false, false
|
||||
change_column_null :users, :admin, false, false
|
||||
|
||||
change_column_default :users, :otp_required_for_login, false
|
||||
change_column_null :users, :otp_required_for_login, false, false
|
||||
change_column_default :users, :otp_required_for_login, false
|
||||
change_column_null :users, :otp_required_for_login, false, false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -70,20 +70,22 @@ class IdsToBigints < ActiveRecord::Migration[5.1]
|
||||
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
|
||||
|
@ -1,6 +1,8 @@
|
||||
class ChangeAccountsNonnullableInAccountModerationNotes < ActiveRecord::Migration[5.1]
|
||||
def change
|
||||
change_column_null :account_moderation_notes, :account_id, false
|
||||
change_column_null :account_moderation_notes, :target_account_id, false
|
||||
safety_assured do
|
||||
change_column_null :account_moderation_notes, :account_id, false
|
||||
change_column_null :account_moderation_notes, :target_account_id, false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -1,5 +1,7 @@
|
||||
class ChangeAccountIdNonnullableInLists < ActiveRecord::Migration[5.1]
|
||||
def change
|
||||
change_column_null :lists, :account_id, false
|
||||
safety_assured do
|
||||
change_column_null :lists, :account_id, false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -1,6 +1,8 @@
|
||||
class ChangeUserIdNonnullable < ActiveRecord::Migration[5.1]
|
||||
def change
|
||||
change_column_null :invites, :user_id, false
|
||||
change_column_null :web_settings, :user_id, false
|
||||
safety_assured do
|
||||
change_column_null :invites, :user_id, false
|
||||
change_column_null :web_settings, :user_id, false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -1,8 +1,10 @@
|
||||
class ChangeColumnsInNotificationsNonnullable < ActiveRecord::Migration[5.1]
|
||||
def change
|
||||
change_column_null :notifications, :activity_id, false
|
||||
change_column_null :notifications, :activity_type, false
|
||||
change_column_null :notifications, :account_id, false
|
||||
change_column_null :notifications, :from_account_id, false
|
||||
safety_assured do
|
||||
change_column_null :notifications, :activity_id, false
|
||||
change_column_null :notifications, :activity_type, false
|
||||
change_column_null :notifications, :account_id, false
|
||||
change_column_null :notifications, :from_account_id, false
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -20,19 +20,21 @@ class FixAccountsUniqueIndex < ActiveRecord::Migration[5.2]
|
||||
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.'
|
||||
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
|
||||
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
|
||||
|
17
db/migrate/20180831171112_create_bookmarks.rb
Normal file
17
db/migrate/20180831171112_create_bookmarks.rb
Normal file
@ -0,0 +1,17 @@
|
||||
class CreateBookmarks < ActiveRecord::Migration[5.1]
|
||||
def change
|
||||
create_table :bookmarks do |t|
|
||||
t.references :account, null: false
|
||||
t.references :status, null: false
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
|
||||
safety_assured do
|
||||
add_foreign_key :bookmarks, :accounts, column: :account_id, on_delete: :cascade
|
||||
add_foreign_key :bookmarks, :statuses, column: :status_id, on_delete: :cascade
|
||||
end
|
||||
|
||||
add_index :bookmarks, [:account_id, :status_id], unique: true
|
||||
end
|
||||
end
|
@ -1,17 +1,79 @@
|
||||
class MigrateAccountConversations < ActiveRecord::Migration[5.2]
|
||||
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 ''
|
||||
class Mention < ApplicationRecord
|
||||
belongs_to :account, inverse_of: :mentions
|
||||
belongs_to :status, -> { unscope(where: :deleted_at) }
|
||||
|
||||
10.downto(1) do |i|
|
||||
say "Continuing in #{i} second#{i == 1 ? '' : 's'}...", true
|
||||
sleep 1
|
||||
delegate(
|
||||
:username,
|
||||
:acct,
|
||||
to: :account,
|
||||
prefix: true
|
||||
)
|
||||
end
|
||||
|
||||
class Notification < ApplicationRecord
|
||||
belongs_to :account, optional: true
|
||||
belongs_to :activity, polymorphic: true, optional: true
|
||||
|
||||
belongs_to :status, foreign_type: 'Status', foreign_key: 'activity_id', optional: true
|
||||
belongs_to :mention, foreign_type: 'Mention', foreign_key: 'activity_id', optional: true
|
||||
|
||||
def target_status
|
||||
mention&.status
|
||||
end
|
||||
end
|
||||
|
||||
class AccountConversation < ApplicationRecord
|
||||
belongs_to :account
|
||||
belongs_to :conversation
|
||||
belongs_to :last_status, -> { unscope(where: :deleted_at) }, class_name: 'Status'
|
||||
|
||||
before_validation :set_last_status
|
||||
|
||||
class << self
|
||||
def add_status(recipient, status)
|
||||
conversation = find_or_initialize_by(account: recipient, conversation_id: status.conversation_id, participant_account_ids: participants_from_status(recipient, status))
|
||||
|
||||
return conversation if conversation.status_ids.include?(status.id)
|
||||
|
||||
conversation.status_ids << status.id
|
||||
conversation.unread = status.account_id != recipient.id
|
||||
conversation.save
|
||||
conversation
|
||||
rescue ActiveRecord::StaleObjectError
|
||||
retry
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def participants_from_status(recipient, status)
|
||||
((status.active_mentions.pluck(:account_id) + [status.account_id]).uniq - [recipient.id]).sort
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def set_last_status
|
||||
self.status_ids = status_ids.sort
|
||||
self.last_status_id = status_ids.last
|
||||
end
|
||||
end
|
||||
|
||||
def up
|
||||
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
|
||||
|
@ -0,0 +1,7 @@
|
||||
class ChangeListAccountFollowNullable < ActiveRecord::Migration[5.1]
|
||||
def change
|
||||
safety_assured do
|
||||
change_column_null :list_accounts, :follow_id, true
|
||||
end
|
||||
end
|
||||
end
|
21
db/migrate/20191212003415_increase_backup_size.rb
Normal file
21
db/migrate/20191212003415_increase_backup_size.rb
Normal file
@ -0,0 +1,21 @@
|
||||
require Rails.root.join('lib', 'mastodon', 'migration_helpers')
|
||||
|
||||
class IncreaseBackupSize < ActiveRecord::Migration[5.2]
|
||||
include Mastodon::MigrationHelpers
|
||||
|
||||
disable_ddl_transaction!
|
||||
|
||||
def up
|
||||
safety_assured do
|
||||
change_column_type_concurrently :backups, :dump_file_size, :bigint
|
||||
cleanup_concurrent_column_type_change :backups, :dump_file_size
|
||||
end
|
||||
end
|
||||
|
||||
def down
|
||||
safety_assured do
|
||||
change_column_type_concurrently :backups, :dump_file_size, :integer
|
||||
cleanup_concurrent_column_type_change :backups, :dump_file_size
|
||||
end
|
||||
end
|
||||
end
|
16
db/migrate/20191218153258_create_announcements.rb
Normal file
16
db/migrate/20191218153258_create_announcements.rb
Normal file
@ -0,0 +1,16 @@
|
||||
class CreateAnnouncements < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
create_table :announcements do |t|
|
||||
t.text :text, null: false, default: ''
|
||||
|
||||
t.boolean :published, null: false, default: false
|
||||
t.boolean :all_day, null: false, default: false
|
||||
|
||||
t.datetime :scheduled_at
|
||||
t.datetime :starts_at
|
||||
t.datetime :ends_at
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
end
|
||||
end
|
12
db/migrate/20200113125135_create_announcement_mutes.rb
Normal file
12
db/migrate/20200113125135_create_announcement_mutes.rb
Normal file
@ -0,0 +1,12 @@
|
||||
class CreateAnnouncementMutes < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
create_table :announcement_mutes do |t|
|
||||
t.belongs_to :account, foreign_key: { on_delete: :cascade, index: false }
|
||||
t.belongs_to :announcement, foreign_key: { on_delete: :cascade }
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
|
||||
add_index :announcement_mutes, [:account_id, :announcement_id], unique: true
|
||||
end
|
||||
end
|
15
db/migrate/20200114113335_create_announcement_reactions.rb
Normal file
15
db/migrate/20200114113335_create_announcement_reactions.rb
Normal file
@ -0,0 +1,15 @@
|
||||
class CreateAnnouncementReactions < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
create_table :announcement_reactions do |t|
|
||||
t.belongs_to :account, foreign_key: { on_delete: :cascade, index: false }
|
||||
t.belongs_to :announcement, foreign_key: { on_delete: :cascade }
|
||||
|
||||
t.string :name, null: false, default: ''
|
||||
t.belongs_to :custom_emoji, foreign_key: { on_delete: :cascade }
|
||||
|
||||
t.timestamps
|
||||
end
|
||||
|
||||
add_index :announcement_reactions, [:account_id, :announcement_id, :name], unique: true, name: :index_announcement_reactions_on_account_id_and_announcement_id
|
||||
end
|
||||
end
|
11
db/migrate/20200119112504_add_public_index_to_statuses.rb
Normal file
11
db/migrate/20200119112504_add_public_index_to_statuses.rb
Normal file
@ -0,0 +1,11 @@
|
||||
class AddPublicIndexToStatuses < ActiveRecord::Migration[5.2]
|
||||
disable_ddl_transaction!
|
||||
|
||||
def up
|
||||
add_index :statuses, [:id, :account_id], name: :index_statuses_public_20200119, algorithm: :concurrently, order: { id: :desc }, 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))'
|
||||
end
|
||||
|
||||
def down
|
||||
remove_index :statuses, name: :index_statuses_public_20200119
|
||||
end
|
||||
end
|
@ -0,0 +1,5 @@
|
||||
class AddPublishedAtToAnnouncements < ActiveRecord::Migration[5.2]
|
||||
def change
|
||||
add_column :announcements, :published_at, :datetime
|
||||
end
|
||||
end
|
83
db/schema.rb
83
db/schema.rb
@ -10,7 +10,7 @@
|
||||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(version: 2019_10_07_013357) do
|
||||
ActiveRecord::Schema.define(version: 2020_01_26_203551) do
|
||||
|
||||
# These are extensions that must be enabled in order to support this database
|
||||
enable_extension "plpgsql"
|
||||
@ -196,15 +196,50 @@ ActiveRecord::Schema.define(version: 2019_10_07_013357) do
|
||||
t.index ["target_type", "target_id"], name: "index_admin_action_logs_on_target_type_and_target_id"
|
||||
end
|
||||
|
||||
create_table "announcement_mutes", force: :cascade do |t|
|
||||
t.bigint "account_id"
|
||||
t.bigint "announcement_id"
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
t.index ["account_id", "announcement_id"], name: "index_announcement_mutes_on_account_id_and_announcement_id", unique: true
|
||||
t.index ["account_id"], name: "index_announcement_mutes_on_account_id"
|
||||
t.index ["announcement_id"], name: "index_announcement_mutes_on_announcement_id"
|
||||
end
|
||||
|
||||
create_table "announcement_reactions", force: :cascade do |t|
|
||||
t.bigint "account_id"
|
||||
t.bigint "announcement_id"
|
||||
t.string "name", default: "", null: false
|
||||
t.bigint "custom_emoji_id"
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
t.index ["account_id", "announcement_id", "name"], name: "index_announcement_reactions_on_account_id_and_announcement_id", unique: true
|
||||
t.index ["account_id"], name: "index_announcement_reactions_on_account_id"
|
||||
t.index ["announcement_id"], name: "index_announcement_reactions_on_announcement_id"
|
||||
t.index ["custom_emoji_id"], name: "index_announcement_reactions_on_custom_emoji_id"
|
||||
end
|
||||
|
||||
create_table "announcements", force: :cascade do |t|
|
||||
t.text "text", default: "", null: false
|
||||
t.boolean "published", default: false, null: false
|
||||
t.boolean "all_day", default: false, null: false
|
||||
t.datetime "scheduled_at"
|
||||
t.datetime "starts_at"
|
||||
t.datetime "ends_at"
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
t.datetime "published_at"
|
||||
end
|
||||
|
||||
create_table "backups", force: :cascade do |t|
|
||||
t.bigint "user_id"
|
||||
t.string "dump_file_name"
|
||||
t.string "dump_content_type"
|
||||
t.integer "dump_file_size"
|
||||
t.datetime "dump_updated_at"
|
||||
t.boolean "processed", default: false, null: false
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
t.bigint "dump_file_size"
|
||||
end
|
||||
|
||||
create_table "blocks", force: :cascade do |t|
|
||||
@ -217,6 +252,16 @@ ActiveRecord::Schema.define(version: 2019_10_07_013357) do
|
||||
t.index ["target_account_id"], name: "index_blocks_on_target_account_id"
|
||||
end
|
||||
|
||||
create_table "bookmarks", force: :cascade do |t|
|
||||
t.bigint "account_id", null: false
|
||||
t.bigint "status_id", null: false
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
t.index ["account_id", "status_id"], name: "index_bookmarks_on_account_id_and_status_id", unique: true
|
||||
t.index ["account_id"], name: "index_bookmarks_on_account_id"
|
||||
t.index ["status_id"], name: "index_bookmarks_on_status_id"
|
||||
end
|
||||
|
||||
create_table "conversation_mutes", force: :cascade do |t|
|
||||
t.bigint "conversation_id", null: false
|
||||
t.bigint "account_id", null: false
|
||||
@ -373,7 +418,7 @@ ActiveRecord::Schema.define(version: 2019_10_07_013357) do
|
||||
create_table "list_accounts", force: :cascade do |t|
|
||||
t.bigint "list_id", null: false
|
||||
t.bigint "account_id", null: false
|
||||
t.bigint "follow_id", null: false
|
||||
t.bigint "follow_id"
|
||||
t.index ["account_id", "list_id"], name: "index_list_accounts_on_account_id_and_list_id", unique: true
|
||||
t.index ["follow_id"], name: "index_list_accounts_on_follow_id"
|
||||
t.index ["list_id", "account_id"], name: "index_list_accounts_on_list_id_and_account_id"
|
||||
@ -681,6 +726,7 @@ ActiveRecord::Schema.define(version: 2019_10_07_013357) do
|
||||
t.boolean "local_only"
|
||||
t.index ["account_id", "id", "visibility", "updated_at"], name: "index_statuses_20190820", order: { id: :desc }, where: "(deleted_at IS NULL)"
|
||||
t.index ["id", "account_id"], name: "index_statuses_local_20190824", order: { id: :desc }, 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)))"
|
||||
t.index ["id", "account_id"], name: "index_statuses_public_20200119", order: { id: :desc }, 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)))"
|
||||
t.index ["in_reply_to_account_id"], name: "index_statuses_on_in_reply_to_account_id"
|
||||
t.index ["in_reply_to_id"], name: "index_statuses_on_in_reply_to_id"
|
||||
t.index ["reblog_of_id", "account_id"], name: "index_statuses_on_reblog_of_id_and_account_id"
|
||||
@ -694,30 +740,6 @@ ActiveRecord::Schema.define(version: 2019_10_07_013357) do
|
||||
t.index ["tag_id", "status_id"], name: "index_statuses_tags_on_tag_id_and_status_id", unique: true
|
||||
end
|
||||
|
||||
create_table "stream_entries", force: :cascade do |t|
|
||||
t.bigint "activity_id"
|
||||
t.string "activity_type"
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
t.boolean "hidden", default: false, null: false
|
||||
t.bigint "account_id"
|
||||
t.index ["account_id", "activity_type", "id"], name: "index_stream_entries_on_account_id_and_activity_type_and_id"
|
||||
t.index ["activity_id", "activity_type"], name: "index_stream_entries_on_activity_id_and_activity_type"
|
||||
end
|
||||
|
||||
create_table "subscriptions", force: :cascade do |t|
|
||||
t.string "callback_url", default: "", null: false
|
||||
t.string "secret"
|
||||
t.datetime "expires_at"
|
||||
t.boolean "confirmed", default: false, null: false
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
t.datetime "last_successful_delivery_at"
|
||||
t.string "domain"
|
||||
t.bigint "account_id", null: false
|
||||
t.index ["account_id", "callback_url"], name: "index_subscriptions_on_account_id_and_callback_url", unique: true
|
||||
end
|
||||
|
||||
create_table "tags", force: :cascade do |t|
|
||||
t.string "name", default: "", null: false
|
||||
t.datetime "created_at", null: false
|
||||
@ -832,9 +854,16 @@ ActiveRecord::Schema.define(version: 2019_10_07_013357) do
|
||||
add_foreign_key "account_warnings", "accounts", on_delete: :nullify
|
||||
add_foreign_key "accounts", "accounts", column: "moved_to_account_id", on_delete: :nullify
|
||||
add_foreign_key "admin_action_logs", "accounts", on_delete: :cascade
|
||||
add_foreign_key "announcement_mutes", "accounts", on_delete: :cascade
|
||||
add_foreign_key "announcement_mutes", "announcements", on_delete: :cascade
|
||||
add_foreign_key "announcement_reactions", "accounts", on_delete: :cascade
|
||||
add_foreign_key "announcement_reactions", "announcements", on_delete: :cascade
|
||||
add_foreign_key "announcement_reactions", "custom_emojis", on_delete: :cascade
|
||||
add_foreign_key "backups", "users", on_delete: :nullify
|
||||
add_foreign_key "blocks", "accounts", column: "target_account_id", name: "fk_9571bfabc1", on_delete: :cascade
|
||||
add_foreign_key "blocks", "accounts", name: "fk_4269e03e65", on_delete: :cascade
|
||||
add_foreign_key "bookmarks", "accounts", on_delete: :cascade
|
||||
add_foreign_key "bookmarks", "statuses", on_delete: :cascade
|
||||
add_foreign_key "conversation_mutes", "accounts", name: "fk_225b4212bb", on_delete: :cascade
|
||||
add_foreign_key "conversation_mutes", "conversations", on_delete: :cascade
|
||||
add_foreign_key "custom_filters", "accounts", on_delete: :cascade
|
||||
|
Reference in New Issue
Block a user