cannery/lib/cannery/invites/invite.ex

37 lines
927 B
Elixir
Raw Normal View History

2021-09-10 00:23:26 -04:00
defmodule Cannery.Invites.Invite do
use Ecto.Schema
import Ecto.Changeset
alias Cannery.{Accounts}
@primary_key {:id, :binary_id, autogenerate: true}
@foreign_key_type :binary_id
schema "invites" do
field :name, :string
field :token, :string
field :uses_left, :integer, default: nil
field :disabled_at, :naive_datetime
2021-09-12 19:26:04 -04:00
2021-09-10 00:23:26 -04:00
belongs_to :user, Accounts.User
timestamps()
end
@type t :: %{
id: Ecto.UUID.t(),
name: String.t(),
token: String.t(),
uses_left: integer() | nil,
disabled_at: NaiveDateTime.t(),
2021-09-12 19:26:04 -04:00
user: Accounts.User.t(),
user_id: Ecto.UUID.t()
2021-09-10 00:23:26 -04:00
}
2021-09-12 19:26:04 -04:00
@doc false
def changeset(invite, attrs) do
invite
|> cast(attrs, [:name, :token, :uses_left, :disabled_at, :user_id])
|> validate_required([:name, :token, :user_id])
|> validate_number(:uses_left, greater_than_or_equal_to: 0)
end
2021-09-10 00:23:26 -04:00
end