lib/openagents/chat/account_event.ex

main at 58e6347eeb72 · 843 B

defmodule OpenAgents.Chat.AccountEvent do
  @moduledoc false
  use Ecto.Schema
  import Ecto.Changeset
  @primary_key {:id, :binary_id, autogenerate: true}
  @foreign_key_type :binary_id
  @timestamps_opts [type: :utc_datetime_usec, updated_at: false]
  schema "account_chat_events" do
    belongs_to :run, OpenAgents.Chat.AccountRun
    field :sequence, :integer
    field :kind, :string
    field :payload, :map, default: %{}
    field :observed_at, :utc_datetime_usec
    timestamps(updated_at: false)
  end

  def changeset(event, attrs) do
    event
    |> cast(attrs, [:sequence, :kind, :payload, :observed_at])
    |> validate_required([:run_id, :sequence, :kind, :payload, :observed_at])
    |> validate_number(:sequence, greater_than: 0)
    |> foreign_key_constraint(:run_id)
    |> unique_constraint([:run_id, :sequence])
  end
end