class WikiLine < ApplicationRecord
  has_many :wiki_revision_lines, dependent: :restrict_with_exception

  validates :sha256, presence: true, uniqueness: true, length: { is: 64 }
  validates :body, presence: true

  def self.upsert_by_body! body
    sha = Digest::SHA256.hexdigest(body)
    now = Time.current

    upsert(sha256: sha, body:, created_at: now, updated_at: now)

    find_by!(sha256: sha)
  end
end
