defmodule DaProductApp.Accounts.User do @moduledoc """ Sample User schema with MySQL auto-increment configuration """ use Ecto.Schema import Ecto.Changeset # Configure auto-increment primary key for MySQL @primary_key {:id, :id, autogenerate: true} @derive {Phoenix.Param, key: :id} schema "users" do field :name, :string field :email, :string field :phone, :string field :status, :string, default: "active" field :role, :string, default: "user" timestamps() end @doc false def changeset(user, attrs) do user |> cast(attrs, [:name, :email, :phone, :status, :role]) |> validate_required([:name, :email]) |> validate_format(:email, ~r/^[^\s]+@[^\s]+\.[^\s]+$/) |> validate_inclusion(:status, ["active", "inactive", "suspended"]) |> validate_inclusion(:role, ["user", "admin", "manager"]) |> unique_constraint(:email) end end