41 lines
932 B
Elixir
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
|