Архивация списков (#13)
Co-authored-by: gorbenko.pavel <gorbenko.pavel@tansu.kz> Reviewed-on: http://git.tnsu.kz/gorbenko.pavel/tnsu-approval-route/pulls/13
This commit was merged in pull request #13.
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
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; }
|
||||
}
|
||||
Reference in New Issue
Block a user