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>()}) мягко удалённые уже исключает.
""";
}
}