feat: add error logging in after_action cycle generation hooks

- Log warnings when cycle generation fails in Member create/update
- Extract generate_fn to reduce code duplication
- Improves debuggability of silent failures
This commit is contained in:
Moritz 2025-12-12 16:09:37 +01:00
parent 7e4d3e0a60
commit 2e8c9eeccb

View file

@ -112,14 +112,26 @@ defmodule Mv.Membership.Member do
# but in test environment it runs synchronously for DB sandbox compatibility
change after_action(fn _changeset, member, _context ->
if member.membership_fee_type_id && member.join_date do
generate_fn = fn ->
case Mv.MembershipFees.CycleGenerator.generate_cycles_for_member(member.id) do
{:ok, _cycles} ->
:ok
{:error, reason} ->
require Logger
Logger.warning(
"Failed to generate cycles for member #{member.id}: #{inspect(reason)}"
)
end
end
if Application.get_env(:mv, :sql_sandbox, false) do
# Run synchronously in test environment for DB sandbox compatibility
Mv.MembershipFees.CycleGenerator.generate_cycles_for_member(member.id)
generate_fn.()
else
# Run asynchronously in other environments
Task.start(fn ->
Mv.MembershipFees.CycleGenerator.generate_cycles_for_member(member.id)
end)
Task.start(generate_fn)
end
end
@ -180,14 +192,26 @@ defmodule Mv.Membership.Member do
Ash.Changeset.changing_attribute?(changeset, :membership_fee_type_id)
if fee_type_changed && member.membership_fee_type_id && member.join_date do
generate_fn = fn ->
case Mv.MembershipFees.CycleGenerator.generate_cycles_for_member(member.id) do
{:ok, _cycles} ->
:ok
{:error, reason} ->
require Logger
Logger.warning(
"Failed to generate cycles for member #{member.id}: #{inspect(reason)}"
)
end
end
if Application.get_env(:mv, :sql_sandbox, false) do
# Run synchronously in test environment for DB sandbox compatibility
Mv.MembershipFees.CycleGenerator.generate_cycles_for_member(member.id)
generate_fn.()
else
# Run asynchronously in other environments
Task.start(fn ->
Mv.MembershipFees.CycleGenerator.generate_cycles_for_member(member.id)
end)
Task.start(generate_fn)
end
end