Merge remote-tracking branch 'parent/main' into upstream-20241119
This commit is contained in:
commit
055045981f
221 changed files with 2006 additions and 1127 deletions
|
@ -4,95 +4,85 @@ module Account::Associations
|
|||
extend ActiveSupport::Concern
|
||||
|
||||
included do
|
||||
# Local users
|
||||
has_one :user, inverse_of: :account, dependent: :destroy
|
||||
# Core associations
|
||||
with_options dependent: :destroy do
|
||||
# Association where account owns record
|
||||
with_options inverse_of: :account do
|
||||
has_many :account_moderation_notes
|
||||
has_many :account_pins
|
||||
has_many :account_warnings
|
||||
has_many :aliases, class_name: 'AccountAlias'
|
||||
has_many :antenna_accounts
|
||||
has_many :antennas
|
||||
has_many :bookmarks
|
||||
has_many :bookmark_categories
|
||||
has_many :circle_accounts
|
||||
has_many :circles
|
||||
has_many :conversations, class_name: 'AccountConversation'
|
||||
has_many :custom_filters
|
||||
has_many :emoji_reactions
|
||||
has_many :favourites
|
||||
has_many :featured_tags, -> { includes(:tag) }
|
||||
has_many :list_accounts
|
||||
has_many :media_attachments
|
||||
has_many :mentions
|
||||
has_many :migrations, class_name: 'AccountMigration'
|
||||
has_many :ng_rule_histories
|
||||
has_many :notification_permissions
|
||||
has_many :notification_requests
|
||||
has_many :notifications
|
||||
has_many :owned_lists, class_name: 'List'
|
||||
has_many :polls
|
||||
has_many :report_notes
|
||||
has_many :reports
|
||||
has_many :scheduled_statuses
|
||||
has_many :scheduled_expiration_statuses
|
||||
has_many :status_pins
|
||||
has_many :statuses
|
||||
|
||||
# Timelines
|
||||
has_many :statuses, inverse_of: :account, dependent: :destroy
|
||||
has_many :favourites, inverse_of: :account, dependent: :destroy
|
||||
has_many :emoji_reactions, inverse_of: :account, dependent: :destroy
|
||||
has_many :bookmarks, inverse_of: :account, dependent: :destroy
|
||||
has_many :bookmark_categories, inverse_of: :account, dependent: :destroy
|
||||
has_many :circles, inverse_of: :account, dependent: :destroy
|
||||
has_many :antennas, inverse_of: :account, dependent: :destroy
|
||||
has_many :mentions, inverse_of: :account, dependent: :destroy
|
||||
has_many :conversations, class_name: 'AccountConversation', dependent: :destroy, inverse_of: :account
|
||||
has_many :scheduled_statuses, inverse_of: :account, dependent: :destroy
|
||||
has_many :scheduled_expiration_statuses, inverse_of: :account, dependent: :destroy
|
||||
has_many :ng_rule_histories, inverse_of: :account, dependent: :destroy
|
||||
has_one :deletion_request, class_name: 'AccountDeletionRequest'
|
||||
has_one :follow_recommendation_suppression
|
||||
has_one :notification_policy
|
||||
has_one :statuses_cleanup_policy, class_name: 'AccountStatusesCleanupPolicy'
|
||||
has_one :user
|
||||
end
|
||||
|
||||
# Notifications
|
||||
has_many :notifications, inverse_of: :account, dependent: :destroy
|
||||
has_one :notification_policy, inverse_of: :account, dependent: :destroy
|
||||
has_many :notification_permissions, inverse_of: :account, dependent: :destroy
|
||||
has_many :notification_requests, inverse_of: :account, dependent: :destroy
|
||||
# Association where account is targeted by record
|
||||
with_options foreign_key: :target_account_id, inverse_of: :target_account do
|
||||
has_many :strikes, class_name: 'AccountWarning'
|
||||
has_many :targeted_moderation_notes, class_name: 'AccountModerationNote'
|
||||
has_many :targeted_reports, class_name: 'Report'
|
||||
end
|
||||
end
|
||||
|
||||
# Pinned statuses
|
||||
has_many :status_pins, inverse_of: :account, dependent: :destroy
|
||||
has_many :pinned_statuses, -> { reorder('status_pins.created_at DESC') }, through: :status_pins, class_name: 'Status', source: :status
|
||||
# Status records pinned by the account
|
||||
has_many :pinned_statuses, -> { reorder(status_pins: { created_at: :desc }) }, through: :status_pins, class_name: 'Status', source: :status
|
||||
|
||||
# Endorsements
|
||||
has_many :account_pins, inverse_of: :account, dependent: :destroy
|
||||
# Account records endorsed (pinned) by the account
|
||||
has_many :endorsed_accounts, through: :account_pins, class_name: 'Account', source: :target_account
|
||||
|
||||
# Media
|
||||
has_many :media_attachments, dependent: :destroy
|
||||
has_many :polls, dependent: :destroy
|
||||
|
||||
# Report relationships
|
||||
has_many :reports, dependent: :destroy, inverse_of: :account
|
||||
has_many :targeted_reports, class_name: 'Report', foreign_key: :target_account_id, dependent: :destroy, inverse_of: :target_account
|
||||
|
||||
has_many :report_notes, dependent: :destroy
|
||||
has_many :custom_filters, inverse_of: :account, dependent: :destroy
|
||||
has_many :antenna_accounts, inverse_of: :account, dependent: :destroy
|
||||
|
||||
# Moderation notes
|
||||
has_many :account_moderation_notes, dependent: :destroy, inverse_of: :account
|
||||
has_many :targeted_moderation_notes, class_name: 'AccountModerationNote', foreign_key: :target_account_id, dependent: :destroy, inverse_of: :target_account
|
||||
has_many :account_warnings, dependent: :destroy, inverse_of: :account
|
||||
has_many :strikes, class_name: 'AccountWarning', foreign_key: :target_account_id, dependent: :destroy, inverse_of: :target_account
|
||||
|
||||
# Remote pendings
|
||||
has_many :pending_follow_requests, dependent: :destroy
|
||||
has_many :pending_statuses, dependent: :destroy
|
||||
has_many :fetchable_pending_statuses, class_name: 'PendingStatus', foreign_key: :fetch_account_id, dependent: :destroy, inverse_of: :fetch_account
|
||||
|
||||
# Antennas (that the account is on, not owned by the account)
|
||||
has_many :antenna_accounts, inverse_of: :account, dependent: :destroy
|
||||
has_many :joined_antennas, class_name: 'Antenna', through: :antenna_accounts, source: :antenna
|
||||
|
||||
# Circles (that the account is on, not owned by the account)
|
||||
has_many :circle_accounts, inverse_of: :account, dependent: :destroy
|
||||
has_many :joined_circles, class_name: 'Circle', through: :circle_accounts, source: :circle
|
||||
|
||||
# Lists (that the account is on, not owned by the account)
|
||||
has_many :list_accounts, inverse_of: :account, dependent: :destroy
|
||||
# List records the account has been added to (not owned by the account)
|
||||
has_many :lists, through: :list_accounts
|
||||
|
||||
# Lists (owned by the account)
|
||||
has_many :owned_lists, class_name: 'List', dependent: :destroy, inverse_of: :account
|
||||
# Account list items
|
||||
has_many :joined_antennas, class_name: 'Antenna', through: :antenna_accounts, source: :antenna
|
||||
has_many :joined_circles, class_name: 'Circle', through: :circle_accounts, source: :circle
|
||||
|
||||
# Account migrations
|
||||
# Account record where account has been migrated
|
||||
belongs_to :moved_to_account, class_name: 'Account', optional: true
|
||||
has_many :migrations, class_name: 'AccountMigration', dependent: :destroy, inverse_of: :account
|
||||
has_many :aliases, class_name: 'AccountAlias', dependent: :destroy, inverse_of: :account
|
||||
|
||||
# Hashtags
|
||||
# Tag records applied to account
|
||||
has_and_belongs_to_many :tags # rubocop:disable Rails/HasAndBelongsToMany
|
||||
has_many :featured_tags, -> { includes(:tag) }, dependent: :destroy, inverse_of: :account
|
||||
|
||||
# Account deletion requests
|
||||
has_one :deletion_request, class_name: 'AccountDeletionRequest', inverse_of: :account, dependent: :destroy
|
||||
|
||||
# Follow recommendations
|
||||
# FollowRecommendation for account (surfaced via view)
|
||||
has_one :follow_recommendation, inverse_of: :account, dependent: nil
|
||||
has_one :follow_recommendation_suppression, inverse_of: :account, dependent: :destroy
|
||||
|
||||
# Account statuses cleanup policy
|
||||
has_one :statuses_cleanup_policy, class_name: 'AccountStatusesCleanupPolicy', inverse_of: :account, dependent: :destroy
|
||||
|
||||
# Imports
|
||||
# BulkImport records owned by account
|
||||
has_many :bulk_imports, inverse_of: :account, dependent: :delete_all
|
||||
end
|
||||
end
|
||||
|
|
|
@ -80,8 +80,8 @@ module Account::Interactions
|
|||
has_many :passive_relationships, foreign_key: 'target_account_id', inverse_of: :target_account
|
||||
end
|
||||
|
||||
has_many :following, -> { order('follows.id desc') }, through: :active_relationships, source: :target_account
|
||||
has_many :followers, -> { order('follows.id desc') }, through: :passive_relationships, source: :account
|
||||
has_many :following, -> { order(follows: { id: :desc }) }, through: :active_relationships, source: :target_account
|
||||
has_many :followers, -> { order(follows: { id: :desc }) }, through: :passive_relationships, source: :account
|
||||
|
||||
with_options class_name: 'SeveredRelationship', dependent: :destroy do
|
||||
has_many :severed_relationships, foreign_key: 'local_account_id', inverse_of: :local_account
|
||||
|
@ -96,16 +96,16 @@ module Account::Interactions
|
|||
has_many :block_relationships, foreign_key: 'account_id', inverse_of: :account
|
||||
has_many :blocked_by_relationships, foreign_key: :target_account_id, inverse_of: :target_account
|
||||
end
|
||||
has_many :blocking, -> { order('blocks.id desc') }, through: :block_relationships, source: :target_account
|
||||
has_many :blocked_by, -> { order('blocks.id desc') }, through: :blocked_by_relationships, source: :account
|
||||
has_many :blocking, -> { order(blocks: { id: :desc }) }, through: :block_relationships, source: :target_account
|
||||
has_many :blocked_by, -> { order(blocks: { id: :desc }) }, through: :blocked_by_relationships, source: :account
|
||||
|
||||
# Mute relationships
|
||||
with_options class_name: 'Mute', dependent: :destroy do
|
||||
has_many :mute_relationships, foreign_key: 'account_id', inverse_of: :account
|
||||
has_many :muted_by_relationships, foreign_key: :target_account_id, inverse_of: :target_account
|
||||
end
|
||||
has_many :muting, -> { order('mutes.id desc') }, through: :mute_relationships, source: :target_account
|
||||
has_many :muted_by, -> { order('mutes.id desc') }, through: :muted_by_relationships, source: :account
|
||||
has_many :muting, -> { order(mutes: { id: :desc }) }, through: :mute_relationships, source: :target_account
|
||||
has_many :muted_by, -> { order(mutes: { id: :desc }) }, through: :muted_by_relationships, source: :account
|
||||
has_many :conversation_mutes, dependent: :destroy
|
||||
has_many :domain_blocks, class_name: 'AccountDomainBlock', dependent: :destroy
|
||||
has_many :announcement_mutes, dependent: :destroy
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue