Current section

Files

Jump to
supabase_gotrue lib supabase go_true user factor.ex
Raw

lib/supabase/go_true/user/factor.ex

defmodule Supabase.GoTrue.User.Factor do
@moduledoc """
This schema is used to validate and parse the parameters for a user factor.
## Fields
* `friendly_name` - The friendly name of the factor.
* `factor_type` - The type of factor.
* `status` - The status of the factor.
* `created_at` - The creation date of the factor.
* `updated_at` - The last update date of the factor.
* `id` - The factor's ID.
"""
use Ecto.Schema
import Ecto.Changeset
@type t :: %__MODULE__{
id: Ecto.UUID.t(),
friendly_name: String.t() | nil,
factor_type: :totp,
status: :verified | :unverified,
created_at: NaiveDateTime.t(),
updated_at: NaiveDateTime.t()
}
@derive Jason.Encoder
@primary_key {:id, :binary_id, autogenerate: false}
embedded_schema do
field(:friendly_name, :string)
field(:factor_type, Ecto.Enum, values: ~w[totp]a)
field(:status, Ecto.Enum, values: ~w[verified unverified]a)
timestamps(inserted_at: :created_at)
end
def changeset(factor \\ %__MODULE__{}, attrs) do
factor
|> cast(attrs, ~w[id friendly_name factor_type status created_at updated_at]a)
|> validate_required(~w[id factor_type status created_at updated_at]a)
end
end