mobilizon/lib/mobilizon/instances/instance_actor.ex

40 lines
1.0 KiB
Elixir

defmodule Mobilizon.Instances.InstanceActor do
@moduledoc """
An instance actor
"""
use Ecto.Schema
import Ecto.Changeset
alias Mobilizon.Actors.Actor
@type t :: %__MODULE__{
domain: String.t(),
actor: Actor.t(),
instance_name: String.t(),
instance_description: String.t(),
software: String.t(),
software_version: String.t()
}
schema "instance_actors" do
field(:domain, :string)
field(:instance_name, :string)
field(:instance_description, :string)
field(:software, :string)
field(:software_version, :string)
belongs_to(:actor, Actor)
timestamps()
end
@required_attrs [:domain]
@optional_attrs [:actor_id, :instance_name, :instance_description, :software, :software_version]
@attrs @required_attrs ++ @optional_attrs
def changeset(%__MODULE__{} = instance_actor, attrs) do
instance_actor
|> cast(attrs, @attrs)
|> validate_required(@required_attrs)
|> unique_constraint(:domain)
end
end