| defmodule PlausibleWeb.Live.SiteTransferSettings.Form do | |
| @moduledoc """ | |
| Form schema used by site transfer settings live view. | |
| """ | |
| use Ecto.Schema | |
| import Ecto.Changeset | |
| @primary_key false | |
| embedded_schema do | |
| field :destination, Ecto.Enum, values: [:team, :my_team, :account] | |
| field :team_identifier, :string | |
| field :email, :string | |
| field :my_team_available, :boolean, default: false | |
| end | |
| def changeset(params) do | |
| %__MODULE__{} | |
| |> cast(params, [:destination, :team_identifier, :my_team_available, :email]) | |
| |> validate_required(:destination) | |
| |> validate_destination_fields() | |
| end | |
| defp validate_destination_fields(changeset) do | |
| case get_field(changeset, :destination) do | |
| :team -> | |
| validate_required(changeset, :team_identifier, message: "Please select a team") | |
| :account -> | |
| validate_required(changeset, :email, message: "Please enter an email address") | |
| :my_team -> | |
| changeset | |
| end | |
| end | |
| end | |