defmodule DaProductApp.Merchants.Merchant do use Ecto.Schema import Ecto.Changeset @primary_key {:id, :binary_id, autogenerate: true} @foreign_key_type :binary_id schema "merchants" do field :name, :string field :email, :string field :phone, :string field :status, :string field :merchant_id, :string field :category, :string # Cat A, Cat B, Cat C, Cat D field :mcc_code, :string # Merchant Category Code field :risk_tier, :string # Enterprise, Mid-Market, Known Entity, SME/SMB # ... add additional fields if needed ... timestamps(type: :utc_datetime) end @valid_categories ["Cat A", "Cat B", "Cat C", "Cat D"] @valid_risk_tiers ["Enterprise Merchant", "Mid-Market Merchant", "Known Entity", "SME/SMB"] def changeset(merchant, attrs) do merchant |> cast(attrs, [:name, :email, :phone, :status, :merchant_id, :category, :mcc_code, :risk_tier]) |> validate_required([:name]) |> validate_inclusion(:category, @valid_categories) |> validate_inclusion(:risk_tier, @valid_risk_tiers) |> validate_length(:mcc_code, is: 4) end def valid_categories, do: @valid_categories def valid_risk_tiers, do: @valid_risk_tiers end