# frozen_string_literal: true
# == Schema Information
#
# Table name: conversations
# id :bigint(8) not null, primary key
# uri :string
# created_at :datetime not null
# updated_at :datetime not null
# parent_status_id :bigint(8)
# parent_account_id :bigint(8)
# inbox_url :string
class Conversation < ApplicationRecord
validates :uri, uniqueness: true, if: :uri?
belongs_to :parent_status, class_name: 'Status', optional: true, inverse_of: :conversation
belongs_to :parent_account, class_name: 'Account', optional: true
has_many :statuses, inverse_of: :conversation
scope :local, -> { where(uri: nil) }
before_validation :set_parent_account, on: :create
after_create :set_conversation_on_parent_status
def local?
uri.nil?
end
def object_type
:conversation
private
def set_parent_account
self.parent_account = parent_status.account if parent_status.present?
def set_conversation_on_parent_status
parent_status.update_column(:conversation_id, id) if parent_status.present?