fix: prevent nil assignment for membership_fee_type_id

Reject attempts to set membership_fee_type_id to nil when a current type
exists.
This commit is contained in:
Moritz 2025-12-15 12:21:36 +01:00
parent 032db2a4ba
commit 28b2be1125
Signed by: moritz
GPG key ID: 1020A035E5DD0824

View file

@ -42,9 +42,9 @@ defmodule Mv.MembershipFees.Changes.ValidateSameInterval do
is_nil(current_type_id) ->
changeset
# If new type is nil, that's allowed (removing type)
# If new type is nil, reject the change (membership_fee_type_id is required)
is_nil(new_type_id) ->
changeset
add_nil_type_error(changeset)
# Both types exist - validate intervals match
true ->
@ -125,6 +125,17 @@ defmodule Mv.MembershipFees.Changes.ValidateSameInterval do
)
end
# Add validation error when trying to set membership_fee_type_id to nil
defp add_nil_type_error(changeset) do
message = "Cannot remove membership fee type. A membership fee type is required."
Ash.Changeset.add_error(
changeset,
field: :membership_fee_type_id,
message: message
)
end
# Format interval atom to human-readable string
defp format_interval(:monthly), do: "monthly"
defp format_interval(:quarterly), do: "quarterly"