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) -> is_nil(current_type_id) ->
changeset 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) -> is_nil(new_type_id) ->
changeset add_nil_type_error(changeset)
# Both types exist - validate intervals match # Both types exist - validate intervals match
true -> true ->
@ -125,6 +125,17 @@ defmodule Mv.MembershipFees.Changes.ValidateSameInterval do
) )
end 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 # Format interval atom to human-readable string
defp format_interval(:monthly), do: "monthly" defp format_interval(:monthly), do: "monthly"
defp format_interval(:quarterly), do: "quarterly" defp format_interval(:quarterly), do: "quarterly"