2021-06-22 23:55:02 +00:00
|
|
|
defmodule Wabanex.User do
|
2022-04-22 00:49:00 +00:00
|
|
|
@moduledoc """
|
|
|
|
Schema of a user in the system.
|
|
|
|
"""
|
2021-06-22 23:55:02 +00:00
|
|
|
use Ecto.Schema
|
|
|
|
|
2021-06-22 23:56:07 +00:00
|
|
|
import Ecto.Changeset
|
|
|
|
|
2021-06-26 17:21:29 +00:00
|
|
|
alias Wabanex.Training
|
|
|
|
|
2021-06-22 23:55:02 +00:00
|
|
|
@primary_key {:id, :binary_id, autogenerate: true}
|
|
|
|
|
2021-06-22 23:56:07 +00:00
|
|
|
@fields ~w(name email password)a
|
|
|
|
|
2021-06-22 23:55:02 +00:00
|
|
|
schema "users" do
|
|
|
|
field :name, :string
|
|
|
|
field :email, :string
|
|
|
|
field :password, :string
|
|
|
|
|
2021-06-26 17:21:29 +00:00
|
|
|
has_many :trainings, Training
|
|
|
|
|
2021-06-22 23:55:02 +00:00
|
|
|
timestamps()
|
|
|
|
end
|
2021-06-22 23:56:07 +00:00
|
|
|
|
|
|
|
def changeset(params) do
|
|
|
|
%__MODULE__{}
|
|
|
|
|> cast(params, @fields)
|
|
|
|
|> validate_required(@fields)
|
|
|
|
|> validate_length(:name, min: 2)
|
|
|
|
|> validate_length(:password, min: 6)
|
|
|
|
|> validate_format(:email, ~r/@/)
|
|
|
|
|> unique_constraint([:email])
|
|
|
|
end
|
2021-06-22 23:55:02 +00:00
|
|
|
end
|