defmodule Prymn.Servers.Server do use Ecto.Schema import Ecto.Changeset schema "servers" do field :name, :string field :public_ip, :string field :provider, Ecto.Enum, values: [:Hetzner, :Custom] field :registration_token, :binary, redact: true field :status, Ecto.Enum, values: [:unregistered, :registered], default: :unregistered field :connection_status, :string, virtual: true timestamps() end @doc false def changeset(server, attrs) do server |> cast(attrs, [:name, :public_ip, :provider, :registration_token, :status]) |> validate_required([:name, :provider]) |> validate_inclusion(:provider, [:Custom], message: "Provider not available (yet)") |> unique_constraint([:public_ip]) end end