forked from fedi/mastodon
cf7e840990
All the migrations have been updated to use BIGINTs for ID fields in the DB, but ActiveRecord needs to be told to treat those values as BIGINT as well. This PR does that.
60 lines
1.6 KiB
Ruby
60 lines
1.6 KiB
Ruby
# frozen_string_literal: true
|
|
# == Schema Information
|
|
#
|
|
# Table name: stream_entries
|
|
#
|
|
# activity_id :bigint
|
|
# activity_type :string
|
|
# created_at :datetime not null
|
|
# updated_at :datetime not null
|
|
# hidden :boolean default(FALSE), not null
|
|
# account_id :bigint
|
|
# id :bigint not null, primary key
|
|
#
|
|
|
|
class StreamEntry < ApplicationRecord
|
|
include Paginable
|
|
|
|
belongs_to :account, inverse_of: :stream_entries
|
|
belongs_to :activity, polymorphic: true
|
|
belongs_to :status, foreign_type: 'Status', foreign_key: 'activity_id', inverse_of: :stream_entry
|
|
|
|
validates :account, :activity, presence: true
|
|
|
|
STATUS_INCLUDES = [:account, :stream_entry, :conversation, :media_attachments, :tags, mentions: :account, reblog: [:stream_entry, :account, :conversation, :media_attachments, :tags, mentions: :account], thread: [:stream_entry, :account]].freeze
|
|
|
|
default_scope { where(activity_type: 'Status') }
|
|
scope :recent, -> { reorder(id: :desc) }
|
|
scope :with_includes, -> { includes(:account, status: STATUS_INCLUDES) }
|
|
|
|
delegate :target, :title, :content, :thread,
|
|
to: :status,
|
|
allow_nil: true
|
|
|
|
def object_type
|
|
orphaned? || targeted? ? :activity : status.object_type
|
|
end
|
|
|
|
def verb
|
|
orphaned? ? :delete : status.verb
|
|
end
|
|
|
|
def targeted?
|
|
[:follow, :request_friend, :authorize, :reject, :unfollow, :block, :unblock, :share, :favorite].include? verb
|
|
end
|
|
|
|
def threaded?
|
|
(verb == :favorite || object_type == :comment) && !thread.nil?
|
|
end
|
|
|
|
def mentions
|
|
orphaned? ? [] : status.mentions.map(&:account)
|
|
end
|
|
|
|
private
|
|
|
|
def orphaned?
|
|
status.nil?
|
|
end
|
|
end
|