defmodule Mobilizon.Storage.Repo.Migrations.AddInstanceMaterializedView do
  use Ecto.Migration
  alias Mobilizon.Storage.Views.Instances

  def up do
    execute(Instances.create_materialized_view())

    execute(Instances.refresh_instances())

    execute(Instances.drop_trigger())

    execute(Instances.create_trigger())

    create_if_not_exists(unique_index("instances", [:domain]))
  end

  def down do
    drop_if_exists(unique_index("instances", [:domain]))

    execute(Instances.drop_refresh_instances())

    execute(Instances.drop_view())
  end
end