835 B · text 5af55d9
defmodule GitGud.Federation.Activity do
use Ecto.Schema
import Ecto.Changeset
alias GitGud.Federation.Actor
schema "fed_activities" do
field :activity_url, :string
field :type, :string
field :raw, :map
field :published_at, :utc_datetime
field :is_local, :boolean, default: false
belongs_to :actor, Actor
belongs_to :target_actor, Actor
belongs_to :object_actor, Actor
timestamps(type: :utc_datetime)
end
def changeset(activity, attrs) do
activity
|> cast(attrs, [
:activity_url,
:type,
:actor_id,
:target_actor_id,
:object_actor_id,
:raw,
:published_at,
:is_local
])
|> validate_required([:activity_url, :type, :actor_id, :raw])
|> validate_length(:type, max: 80)
|> unique_constraint(:activity_url)
end
end