Skip to main content

lib/oban_powertools/forensics/limiter_history_fact.ex

defmodule ObanPowertools.Forensics.LimiterHistoryFact do
  @moduledoc false

  use Ecto.Schema
  import Ecto.Changeset

  @primary_key {:id, :binary_id, autogenerate: true}

  schema "oban_powertools_limiter_history_facts" do
    field(:resource_name, :string)
    field(:partition_key, :string, default: "__global__")
    field(:event_type, :string)
    field(:cause_kind, :string)
    field(:occurred_at, :utc_datetime_usec)
    field(:eligible_at, :utc_datetime_usec)
    field(:metadata, :map, default: %{})

    timestamps(updated_at: false)
  end

  def changeset(struct, params) do
    struct
    |> cast(params, [
      :resource_name,
      :partition_key,
      :event_type,
      :cause_kind,
      :occurred_at,
      :eligible_at,
      :metadata
    ])
    |> validate_required([:resource_name, :partition_key, :event_type, :occurred_at])
  end
end