defmodule ArcadiaCloud.Catalog.PlanItem do use Ecto.Schema import Ecto.Changeset @primary_key {:id, :binary_id, autogenerate: true} @foreign_key_type :binary_id schema "plan_items" do field :resource_kind, :string field :included_qty, :decimal, default: Decimal.new(0) field :overage_unit, :string field :overage_price_cents, :integer field :hard_cap_qty, :decimal belongs_to :plan_version, ArcadiaCloud.Catalog.PlanVersion timestamps(type: :utc_datetime) end def changeset(item, attrs) do item |> cast(attrs, [ :plan_version_id, :resource_kind, :included_qty, :overage_unit, :overage_price_cents, :hard_cap_qty ]) |> validate_required([:plan_version_id, :resource_kind, :included_qty]) |> unique_constraint([:plan_version_id, :resource_kind]) end end