refactor: reduce nesting in SyncUserEmailToMember.sync_email
Some checks failed
continuous-integration/drone/push Build is failing
Some checks failed
continuous-integration/drone/push Build is failing
Extract apply_sync/1 and sync_by_record_type/4 to satisfy Credo max depth 2.
This commit is contained in:
parent
6aadf4f93b
commit
f7ba98c36b
1 changed files with 20 additions and 17 deletions
|
|
@ -44,24 +44,27 @@ defmodule Mv.EmailSync.Changes.SyncUserEmailToMember do
|
|||
defp sync_email(changeset) do
|
||||
Ash.Changeset.around_transaction(changeset, fn cs, callback ->
|
||||
result = callback.(cs)
|
||||
apply_sync(result)
|
||||
end)
|
||||
end
|
||||
|
||||
defp apply_sync(result) do
|
||||
with {:ok, record} <- Helpers.extract_record(result),
|
||||
{:ok, user, member} <- get_user_and_member(record) do
|
||||
# When called from Member-side, we need to update the member in the result
|
||||
# When called from User-side, we update the linked member in DB only
|
||||
case record do
|
||||
%Mv.Membership.Member{} ->
|
||||
# Member-side: Override member email in result with user email
|
||||
Helpers.override_with_linked_email(result, user.email)
|
||||
|
||||
%Mv.Accounts.User{} ->
|
||||
# User-side: Sync user email to linked member in DB
|
||||
Helpers.sync_email_to_linked_record(result, member, user.email)
|
||||
end
|
||||
sync_by_record_type(result, record, user, member)
|
||||
else
|
||||
_ -> result
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
# When called from Member-side, we update the member in the result.
|
||||
# When called from User-side, we sync user email to the linked member in DB.
|
||||
defp sync_by_record_type(result, %Mv.Membership.Member{}, user, _member) do
|
||||
Helpers.override_with_linked_email(result, user.email)
|
||||
end
|
||||
|
||||
defp sync_by_record_type(result, %Mv.Accounts.User{}, user, member) do
|
||||
Helpers.sync_email_to_linked_record(result, member, user.email)
|
||||
end
|
||||
|
||||
# Retrieves user and member - works for both resource types
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue