defmodule Mobilizon.Repo.Migrations.CreateReports do use Ecto.Migration alias Mobilizon.Reports.ReportStatus def up do ReportStatus.create_type() create table(:reports) do add(:content, :string) add(:status, ReportStatus.type(), default: "open", null: false) add(:uri, :string, null: false) add(:reported_id, references(:actors, on_delete: :delete_all), null: false) add(:reporter_id, references(:actors, on_delete: :delete_all), null: false) add(:manager_id, references(:actors, on_delete: :delete_all), null: true) add(:event_id, references(:events, on_delete: :delete_all), null: true) timestamps() end create table(:reports_comments, primary_key: false) do add(:report_id, references(:reports, on_delete: :delete_all), null: false) add(:comment_id, references(:comments, on_delete: :delete_all), null: false) end end def down do drop(table(:reports_comments)) drop(table(:reports)) ReportStatus.drop_type() end end