defmodule GitGud.Federation.OutboundDelivery do
use Ecto.Schema
import Ecto.Changeset
alias GitGud.Federation.Activity
schema "fed_outbound_deliveries" do
field :target_inbox_url, :string
field :status, :string, default: "pending"
field :status_code, :integer
field :attempts, :integer, default: 0
field :last_error, :string
field :delivered_at, :utc_datetime
belongs_to :activity, Activity
timestamps(type: :utc_datetime)
end
def changeset(d, attrs) do
d
|> cast(attrs, [
:activity_id,
:target_inbox_url,
:status,
:status_code,
:attempts,
:last_error,
:delivered_at
])
|> validate_required([:activity_id, :target_inbox_url])
|> validate_inclusion(:status, ~w(pending success failure dropped dead_letter))
end
end
827 B · text
5af55d9