defmodule ArcadiaCloud.Catalog.Addon do use Ecto.Schema import Ecto.Changeset @primary_key {:id, :binary_id, autogenerate: true} @foreign_key_type :binary_id schema "addons" do field :code, :string field :name, :string field :resource_kind, :string field :qty, :decimal, default: Decimal.new(0) field :price_cents, :integer, default: 0 field :currency, :string, default: "AUD" field :active, :boolean, default: true timestamps(type: :utc_datetime) end def changeset(addon, attrs) do addon |> cast(attrs, [:code, :name, :resource_kind, :qty, :price_cents, :currency, :active]) |> validate_required([:code, :name, :resource_kind, :qty, :price_cents]) |> validate_length(:currency, is: 3) |> unique_constraint(:code) end end