Reattribute notification-related records if possible when merging accounts (#29694)
parent
de6c9e0fcd
commit
d71d26a3c9
|
@ -27,6 +27,16 @@ module Account::Merging
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
[
|
||||||
|
Notification, NotificationPermission, NotificationRequest
|
||||||
|
].each do |klass|
|
||||||
|
klass.where(from_account_id: other_account.id).reorder(nil).find_each do |record|
|
||||||
|
record.update_attribute(:from_account_id, id)
|
||||||
|
rescue ActiveRecord::RecordNotUnique
|
||||||
|
next
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
target_classes = [
|
target_classes = [
|
||||||
Follow, FollowRequest, Block, Mute, AccountModerationNote, AccountPin,
|
Follow, FollowRequest, Block, Mute, AccountModerationNote, AccountPin,
|
||||||
AccountNote
|
AccountNote
|
||||||
|
|
|
@ -26,6 +26,9 @@ module Mastodon::CLI
|
||||||
class ListAccount < ApplicationRecord; end
|
class ListAccount < ApplicationRecord; end
|
||||||
class PollVote < ApplicationRecord; end
|
class PollVote < ApplicationRecord; end
|
||||||
class Mention < ApplicationRecord; end
|
class Mention < ApplicationRecord; end
|
||||||
|
class Notification < ApplicationRecord; end
|
||||||
|
class NotificationPermission < ApplicationRecord; end
|
||||||
|
class NotificationRequest < ApplicationRecord; end
|
||||||
class AccountDomainBlock < ApplicationRecord; end
|
class AccountDomainBlock < ApplicationRecord; end
|
||||||
class AnnouncementReaction < ApplicationRecord; end
|
class AnnouncementReaction < ApplicationRecord; end
|
||||||
class FeaturedTag < ApplicationRecord; end
|
class FeaturedTag < ApplicationRecord; end
|
||||||
|
@ -108,6 +111,18 @@ module Mastodon::CLI
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
from_classes = [Notification]
|
||||||
|
from_classes << NotificationPermission if db_table_exists?(:notification_permissions)
|
||||||
|
from_classes << NotificationRequest if db_table_exists?(:notification_requests)
|
||||||
|
|
||||||
|
from_classes.each do |klass|
|
||||||
|
klass.where(from_account_id: other_account.id).find_each do |record|
|
||||||
|
record.update_attribute(:from_account_id, id)
|
||||||
|
rescue ActiveRecord::RecordNotUnique
|
||||||
|
next
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
target_classes = [Follow, FollowRequest, Block, Mute, AccountModerationNote, AccountPin]
|
target_classes = [Follow, FollowRequest, Block, Mute, AccountModerationNote, AccountPin]
|
||||||
target_classes << AccountNote if db_table_exists?(:account_notes)
|
target_classes << AccountNote if db_table_exists?(:account_notes)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue