lib/pgflow_dashboard/migration.ex

defmodule PgFlowDashboard.Migration do
  @moduledoc """
  Manages PgFlowDashboard database migrations with version tracking.

  This module provides versioned migrations for PgFlowDashboard, allowing
  incremental upgrades and rollbacks.

  ## Usage in Ecto Migrations

      defmodule MyApp.Repo.Migrations.AddPgflowDashboard do
        use Ecto.Migration

        def up, do: PgFlowDashboard.Migration.up()
        def down, do: PgFlowDashboard.Migration.down()
      end

  ## Options

    * `:prefix` - The schema prefix to use. Defaults to "pgflow_dashboard".
    * `:version` - Target version for up/down migrations. Defaults to current/0.

  ## Version Tracking

  Versions are tracked via PostgreSQL comments on the `runs_with_progress` view:

      COMMENT ON VIEW schema.runs_with_progress IS 'PgFlowDashboard version=1';

  """

  # EctoEvolver generates pattern matches for :materialized_view and :table,
  # but our tracking_object is {:view, ...} so only :view is reachable.
  @dialyzer :no_match

  use EctoEvolver,
    otp_app: :pgflow,
    default_prefix: "pgflow_dashboard",
    versions: [PgFlowDashboard.Migrations.Versions.V01],
    tracking_object: {:view, "runs_with_progress"}
end