namespace Tnsu.ApprovalRoute.Domain.Entities; /// /// Один SharePoint-список данных из нумерованной серии по типу заявок. /// /// Списки заявок нумерованные («<Форма> <N> — данные»): когда в текущем /// списке набирается порог элементов, рядом создаётся следующая пара (партиция), а /// прежняя остаётся архивом только для чтения. Эта таблица — реестр всей серии: без /// неё поиск по заявкам типа не знает, по каким спискам искать. /// /// Текущий (тот, куда идёт запись) список продолжает лежать в /// — реестр его дублирует строкой с наибольшим /// , но источником правды для записи остаётся RequestType. /// /// Сайта у партиции нет намеренно: вся серия живёт на одном сайте — том, что указан /// в на момент создания партиции. Хранить его /// отдельно на каждой партиции — заводить возможность архивам разъехаться по разным /// сайтам, а такой сценарий не поддерживается ни провижинером (см. /// SharePointListProvisioner — всегда пишет на siteUrl запрашивающего типа заявок), /// ни поиском. Если сайт типа заявок когда-нибудь придётся сменить, старые партиции /// нужно будет переносить осознанно, а не молча продолжать читать их со старого адреса. /// public class RequestListPartition { public int Id { get; set; } public int RequestTypeId { get; set; } public RequestType? RequestType { get; set; } /// Номер партиции в серии, с 1. Уникален в пределах типа заявок. public int Number { get; set; } /// /// Серверный относительный url списка — та же семантика, что у /// (несмотря на имя, это url, а не GUID). /// public string ListId { get; set; } = string.Empty; /// /// Title списка на момент создания — для админки, чтобы показать серию без /// похода в SharePoint за каждым заголовком. Может разойтись с фактическим, /// если список переименовали вручную. /// public string? Title { get; set; } public DateTimeOffset CreatedAt { get; set; } }