1006 B · text 5af55d9
defmodule GitGud.Federation.InboxDelivery do
use Ecto.Schema
import Ecto.Changeset
alias GitGud.Federation.Actor
schema "fed_inbox_deliveries" do
field :source_actor_url, :string
field :source_host, :string
field :raw_body, :string
field :headers, :map, default: %{}
field :signature_verified, :boolean, default: false
field :status, :string, default: "pending"
field :status_reason, :string
field :processed_at, :utc_datetime
belongs_to :target_actor, Actor
timestamps(type: :utc_datetime, updated_at: false)
end
def changeset(d, attrs) do
d
|> cast(attrs, [
:target_actor_id,
:source_actor_url,
:source_host,
:raw_body,
:headers,
:signature_verified,
:status,
:status_reason,
:processed_at
])
|> validate_required([:target_actor_id, :raw_body])
|> validate_inclusion(
:status,
~w(pending accepted rejected failed dropped_moderation quarantined)
)
end
end