defmodule Mobilizon.Storage.Repo.Migrations.AddActorConversations do
  use Ecto.Migration

  def up do
    create table(:conversations) do
      add(:event_id, references(:events, on_delete: :delete_all), null: true)
      add(:origin_comment_id, references(:comments, on_delete: :delete_all), null: false)
      add(:last_comment_id, references(:comments, on_delete: :delete_all), null: false)

      timestamps()
    end

    create table(:conversation_participants) do
      add(:conversation_id, references(:conversations, on_delete: :delete_all), null: false)

      add(:actor_id, references(:actors, on_delete: :delete_all), null: false)

      add(:unread, :boolean, default_value: true)

      timestamps()
    end

    alter table(:comments) do
      add(:conversation_id, references(:conversations, on_delete: :delete_all), null: true)
    end
  end

  def down do
    drop table(:conversation_participants)

    alter table(:comments) do
      remove(:conversation_id)
    end

    drop table(:conversations)
  end
end