priv/repo/migrations/20260823150050_create_artifact_links.exs

58e6347eeb72 · 1 KB

defmodule OpenAgents.Repo.Migrations.CreateArtifactLinks do
  use Ecto.Migration

  def change do
    create table(:artifact_links, primary_key: false) do
      add :id, :binary_id, primary_key: true
      add :account_id, references(:users, type: :binary_id, on_delete: :nothing), null: false

      add :repository_id, references(:repositories, type: :binary_id, on_delete: :nothing),
        null: false

      add :artifact_type, :string, null: false
      add :artifact_ref, :string, null: false
      add :tier, :string, null: false
      add :consent, :map, null: false, default: %{}
      add :authority_snapshot, :map, null: false, default: %{}
      add :revoked_at, :utc_datetime_usec
      add :revocation_tombstone, :map, null: false, default: %{}
      timestamps(type: :utc_datetime_usec, updated_at: false)
    end

    create index(:artifact_links, [:account_id])
    create index(:artifact_links, [:repository_id])
    create index(:artifact_links, [:artifact_type, :artifact_ref])

    create constraint(:artifact_links, :artifact_links_tier_check,
             check: "tier IN ('dark','pulse','ledger','glass')"
           )
  end
end