Перейти к основному содержимому

DeleteUserContactCommand

Назначение

Удаление записи контактной информации пользователя. Удаляет UserContactEntity и публикует AfterUserUpdatedNotification через Outbox для формирования snapshot и публикации в Kafka.

Цели

  • Удалить UserContactEntity по ContactId
  • Обеспечить транзакционную целостность
  • Публиковать полный snapshot пользователя в Kafka через Outbox

Command: DeleteUserContactCommand

Входные данные

ПолеТипОбязательноеОписание
ContactIdGuidДаИдентификатор записи UserContactEntity для удаления

Result: DeleteUserContactResult

ПолеТипОбязательноеОписание
ContactIdGuidДаИдентификатор удалённой записи

Бизнес-логика

Основной сценарий

  1. Начать транзакцию (ReadCommitted).
  2. Получить UserContactEntity по ContactId через userContactEntityRepository.FindById.
  3. Если не найден — ошибка «Контакт не найден».
  4. Сохранить UserId и TenantId контакта для уведомления.
  5. Удалить UserContactEntity через userContactEntityRepository.Delete.
  6. Publish AfterUserUpdatedNotification (UserId, TenantId).
  7. Commit.
  8. Вернуть DeleteUserContactResult.

Альтернативные сценарии

  • Контакт не найден: ошибка «Контакт не найден» с метаданными ContactId.

Диаграмма алгоритма

События

  • AfterUserUpdatedNotification — handler формирует AfterUserUpdatedEvent и записывает в Outbox. Kafka-событие публикуется после commit.

Связанные сущности