feat: prevent deletion of membership fee type when used as default in settings

This commit is contained in:
Moritz 2025-12-12 19:01:18 +01:00
parent af7ae2b722
commit c445b78157
3 changed files with 56 additions and 0 deletions

View file

@ -120,6 +120,28 @@ defmodule Mv.MembershipFees.MembershipFeeType do
end
end,
on: [:destroy]
# Prevent deletion if used as default in settings
validate fn changeset, _context ->
if changeset.action_type == :destroy do
require Ash.Query
setting_count =
Mv.Membership.Setting
|> Ash.Query.filter(default_membership_fee_type_id == ^changeset.data.id)
|> Ash.count!()
if setting_count > 0 do
{:error,
message: "Cannot delete membership fee type: it's used as default in settings"}
else
:ok
end
else
:ok
end
end,
on: [:destroy]
end
attributes do