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