# frozen_string_literal: true

# == Schema Information
#
# Table name: redactions
#
#  id                 :integer          not null, primary key
#  title              :string           not null
#  description        :text             not null
#  created_at         :datetime
#  updated_at         :datetime
#  user_id            :bigint           not null
#  description_format :enum             default("markdown"), not null
#
# Foreign Keys
#
#  redactions_user_id_fkey  (user_id => users.id)
#

##
# Redaction represents a record associated with a particular
# action on the database to hide revisions from the history
# which are not appropriate to redistribute any more.
#
# The circumstances of the redaction can be recorded in the
# record's title and description fields, which can be
# displayed linked from the redacted records.
#
class Redaction < ApplicationRecord
  belongs_to :user

  has_many :old_nodes
  has_many :old_ways
  has_many :old_relations

  validates :title, :presence => true, :characters => true
  validates :description, :presence => true, :characters => true
  validates :description_format, :inclusion => { :in => %w[text html markdown] }

  # this method overrides the AR default to provide the rich
  # text object for the description field.
  def description
    RichText.new(self[:description_format], self[:description])
  end
end
