mobilizon/lib/eventos/coherence/invitation.ex

41 lines
932 B
Elixir

defmodule Eventos.Coherence.Invitation do
@moduledoc """
Schema to support inviting a someone to create an account.
"""
use Ecto.Schema
import Ecto.Changeset
schema "invitations" do
field :name, :string
field :email, :string
field :token, :string
timestamps()
end
@doc """
Creates a changeset based on the `model` and `params`.
If no params are provided, an invalid changeset is returned
with no validation performed.
"""
@spec changeset(Ecto.Schema.t, Map.t) :: Ecto.Changeset.t
def changeset(model, params \\ %{}) do
model
|> cast(params, ~w(name email token))
|> validate_required([:name, :email])
|> unique_constraint(:email)
|> validate_format(:email, ~r/@/)
end
@doc """
Creates a changeset for a new schema
"""
@spec new_changeset(Map.t) :: Ecto.Changeset.t
def new_changeset(params \\ %{}) do
changeset %__MODULE__{}, params
end
end