defmodule GigSmart.Model.UserEmail do
  use Ecto.Schema
  import Ecto.Changeset
  alias GigSmart.Model.User

  @primary_key {:id, Ecto.UUID, autogenerate: true}
  @foreign_key_type Ecto.UUID

  schema "user_emails" do
    field(:address, :string)
    field(:confirmed, :boolean)
    timestamps()

    belongs_to(:user, User)
  end

  @permitted_attrs ~w{address}a
  @required_attrs ~w{address}a

  @doc false
  def changeset(%__MODULE__{} = email, attrs \\ %{}) do
    email
    |> cast(attrs, @permitted_attrs)
    |> validate_required(@required_attrs)
    |> unique_constraint(:address)
  end
end