mirror of
https://github.com/funamitech/mastodon
synced 2024-11-27 14:29:03 +09:00
57 lines
1.7 KiB
Ruby
57 lines
1.7 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
# == Schema Information
|
||
|
#
|
||
|
# Table name: relationship_severance_events
|
||
|
#
|
||
|
# id :bigint(8) not null, primary key
|
||
|
# type :integer not null
|
||
|
# target_name :string not null
|
||
|
# purged :boolean default(FALSE), not null
|
||
|
# created_at :datetime not null
|
||
|
# updated_at :datetime not null
|
||
|
#
|
||
|
class RelationshipSeveranceEvent < ApplicationRecord
|
||
|
self.inheritance_column = nil
|
||
|
|
||
|
has_many :severed_relationships, inverse_of: :relationship_severance_event, dependent: :delete_all
|
||
|
|
||
|
enum type: {
|
||
|
domain_block: 0,
|
||
|
user_domain_block: 1,
|
||
|
account_suspension: 2,
|
||
|
}
|
||
|
|
||
|
scope :about_local_account, ->(account) { where(id: SeveredRelationship.about_local_account(account).select(:relationship_severance_event_id)) }
|
||
|
|
||
|
def import_from_active_follows!(follows)
|
||
|
import_from_follows!(follows, true)
|
||
|
end
|
||
|
|
||
|
def import_from_passive_follows!(follows)
|
||
|
import_from_follows!(follows, false)
|
||
|
end
|
||
|
|
||
|
def affected_local_accounts
|
||
|
Account.where(id: severed_relationships.select(:local_account_id))
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def import_from_follows!(follows, active)
|
||
|
SeveredRelationship.insert_all(
|
||
|
follows.pluck(:account_id, :target_account_id, :show_reblogs, :notify, :languages).map do |account_id, target_account_id, show_reblogs, notify, languages|
|
||
|
{
|
||
|
local_account_id: active ? account_id : target_account_id,
|
||
|
remote_account_id: active ? target_account_id : account_id,
|
||
|
show_reblogs: show_reblogs,
|
||
|
notify: notify,
|
||
|
languages: languages,
|
||
|
relationship_severance_event_id: id,
|
||
|
direction: active ? :active : :passive,
|
||
|
}
|
||
|
end
|
||
|
)
|
||
|
end
|
||
|
end
|