Usher.Invitation (Usher v0.1.2)

View Source

Invitation schema for Usher.

Represents an invitation with a unique token, expiration date, and usage tracking.

Summary

Functions

Changeset for creating and updating invitations.

Changeset for incrementing the joined count.

Types

t()

@type t() :: %Usher.Invitation{
  __meta__: term(),
  expires_at: DateTime.t(),
  id: Ecto.UUID.t(),
  inserted_at: DateTime.t(),
  joined_count: integer(),
  token: String.t(),
  updated_at: DateTime.t()
}

Functions

changeset(invitation, attrs)

Changeset for creating and updating invitations.

Examples

iex> Usher.Invitation.changeset(%Usher.Invitation{}, %{
...>   token: "abc123",
...>   expires_at: ~U[2024-12-31 23:59:59Z]
...> })
%Ecto.Changeset{valid?: true}

iex> Usher.Invitation.changeset(%Usher.Invitation{}, %{})
%Ecto.Changeset{valid?: false, errors: [token: {"can't be blank", _}]}

increment_joined_count_changeset(invitation)

Changeset for incrementing the joined count.

This is for when a user successfully registers using the invitation.

Examples

iex> invitation = %Usher.Invitation{joined_count: 0}
iex> Usher.Invitation.increment_joined_count_changeset(invitation)
%Ecto.Changeset{changes: %{joined_count: 1}}