⟨/⟩ 55_Backend/Handlers/InputPackets/DeleteInputPacketHandler.cs

51 строк · в начало

using System;
using Ban.Sdaid.Notation.Documents;
using Ban.Sdaid.Icd;
using Ban.Sdaid.Icd.Api.Endpoints.InputPackets.DeleteInputPacket;
using Ban.Sdaid.Icd.Api.Endpoints.InputPackets.GetInputQueue;
using Ban.Sdaid.Icd.Domain.Capture;

namespace Ban.Sdaid.Icd.Backend.Handlers.InputPackets
{
    /// <summary>Handler мягкого удаления пакета.</summary>
    public class DeleteInputPacketHandler : IHandlerDocument, IFolder<BackendFolder>, IHasStructuralLinks
    {
        public SdaidLink[] Links => new[]
        {
            Rel.Uses<Ban.Sdaid.Icd.Domain.BC_Icd>(),
            Rel.Uses<InputPacketSpec>(),
            Rel.Uses<DOC_DeleteInputPacket>(),
        };

        public static string _refName = "Handler DeleteInputPacket";

        public string Name => "Handler: DeleteInputPacket (мягкое)";

        public string Description =>
            @"Что произойдёт при вызове endpoint мягкого удаления: пометить пакет удалённым и скрыть из очереди; запись и файлы сохранить.";

        public string Version => "0.1";
        public string Status => "draft";
        public string[] Comments => new string[0];

        public static string Purpose = $"""
            ## Назначение

            Мягкое удаление пакета ({SdaidAnchors.RefTo<InputPacketSpec>()}) по
            {SdaidAnchors.RefTo<DOC_DeleteInputPacket>()} (`{nameof(DeleteInputPacketCommand)}`): пакет исчезает
            из очереди, но остаётся в системе — операция обратима. Доступна оператору по умолчанию.
            """;

        public static string Scenario = $"""
            ## Сценарий вызова

            1. Найти пакет по `{nameof(DeleteInputPacketCommand.Id)}`; нет — `404`.
            2. Проставить `{nameof(InputPacket.Deleted)}` = true и сохранить. Файлы кадров и запись не трогаем.
            3. Вернуть `{nameof(DeletePacketResult)}` с `{nameof(DeletedPacketPayload)}`
               (`{nameof(DeletedPacketPayload.Mode)}` = `soft`).

            Запрос очереди ({SdaidAnchors.RefTo<DOC_GetInputQueue>()}) мягко удалённые уже исключает.
            """;
    }
}