refactor: email sync changes

This commit is contained in:
Moritz 2025-10-17 16:01:48 +02:00
parent 2693f67d33
commit 001fca1d16
Signed by: moritz
GPG key ID: 1020A035E5DD0824
7 changed files with 108 additions and 121 deletions

View file

@ -49,8 +49,11 @@ defmodule Mv.Membership.Member do
on_missing: :ignore
)
# Override member email with user email when linking
change Mv.Membership.Member.Changes.OverrideEmailFromUserOnLink
# Sync user email to member when linking (User → Member)
# Only runs when user relationship is being changed
change Mv.EmailSync.Changes.SyncUserEmailToMember do
where [changing(:user)]
end
end
update :update_member do
@ -93,10 +96,17 @@ defmodule Mv.Membership.Member do
on_missing: :unrelate
)
# Override member email with user email when linking
change Mv.Membership.Member.Changes.OverrideEmailFromUserOnLink
# Sync email changes to linked user
change Mv.Membership.Member.Changes.SyncEmailToUser
# Sync member email to user when email changes (Member → User)
# Only runs when email is being changed
change Mv.EmailSync.Changes.SyncMemberEmailToUser do
where [changing(:email)]
end
# Sync user email to member when linking (User → Member)
# Only runs when user relationship is being changed
change Mv.EmailSync.Changes.SyncUserEmailToMember do
where [changing(:user)]
end
end
end
@ -206,9 +216,8 @@ defmodule Mv.Membership.Member do
# User.email is the source of truth - when a link is established, member.email
# is overridden to match user.email. Subsequent changes to either email will
# sync to the other resource.
# See: Mv.Membership.Member.Changes.SyncEmailToUser
# Mv.Membership.Member.Changes.OverrideEmailFromUserOnLink
# Mv.Accounts.User.Changes.SyncEmailToMember
# See: Mv.EmailSync.Changes.SyncUserEmailToMember
# Mv.EmailSync.Changes.SyncMemberEmailToUser
attribute :email, :string do
allow_nil? false
constraints min_length: 5, max_length: 254