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

RemovePanoramaShootingPointCommand

Назначение

Удаление точки съёмки панорамы по идентификатору. Каскадно удаляются или помечаются связанные файлы панорам (LayoutPanoramaPointFile, PropertyObjectPanoramaPointFile) в соответствии с правилами БД.

Цель

Исключить точку съёмки из использования и освободить привязки файлов.

Command: RemovePanoramaShootingPointCommand (Входные данные)

ПолеТипОбязательностьОписание
PointIdGuidОбязательноеИдентификатор точки съёмки
примечание

TenantId берётся из контекста запроса.

Result: RemovePanoramaShootingPointCommandResult (Выходные данные)

ПолеТипОбязательностьОписание
SuccessboolОбязательноеПризнак успешного удаления

Валидация

  • Точка съёмки с PointId должна существовать в таблице PanoramaShootingPointEntity. Получить сущность по Id из БД; если не найдена — вернуть ошибку.

Ограничения

  • Удаление может быть запрещено при наличии активных задач в очереди, ссылающихся на точку (при наличии таких правил).

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

  1. Получить сущность PanoramaShootingPointEntity из таблицы PanoramaShootingPointEntity по PointId (и TenantId из контекста). Если не найдена — вернуть ошибку «Точка съёмки не найдена».
  2. Удалить связанные записи LayoutPanoramaPointFileEntity и PropertyObjectPanoramaPointFileEntity по PointId (или каскадное удаление по FK).
  3. Удалить запись PanoramaShootingPointEntity из БД.
  4. Сформировать объект результата (Success = true).
  5. Вернуть результат клиенту.

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

События

При необходимости публикуется уведомление об удалении (например для очистки файлов через сагу). Конкретные события зависят от реализации.

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

API

PanoramaPointsController.RemovePanoramaShootingPoint — DELETE api/{tenantId}/chessboard/panoramas/panorama-points/{pointId}