namespace Tnsu.ApprovalRoute.Application.ListPartitioning;
/// Настройки нумерованных партиций списков заявок (секция ListPartitioning в конфигурации).
public sealed class ListPartitioningOptions
{
///
/// Порог элементов в списке данных, по достижении которого ставится задача на
/// создание следующей партиции (пары списков).
///
/// 5000 — не предел SharePoint на число элементов (их может быть миллионы), а
/// «list view threshold»: запросы, которым приходится просмотреть больше 5000
/// элементов без подходящего индекса, SharePoint отклоняет. Порог намеренно чуть
/// ниже, чтобы задача успела создать следующую партицию до того, как текущая
/// начнёт упираться.
///
public int ItemCountThreshold { get; set; } = 4500;
///
/// Через сколько блокировка провижининга считается брошенной и может быть
/// перехвачена (процесс упал, не сняв флаг). См. RequestType.ListPartitioningStartedAt.
///
public TimeSpan StaleLockAfter { get; set; } = TimeSpan.FromMinutes(30);
///
/// Проверять ли порог в эндпоинте «текущий список». false — эндпоинт только
/// отдаёт список, не обращаясь к SharePoint за числом элементов и никого не
/// ставя в очередь. Полезно, если SharePoint временно недоступен или нужно
/// приостановить автосоздание партиций, не трогая остальную логику.
///
public bool CheckThresholdOnRead { get; set; } = true;
}