feat(dal): заготовка для хранения истории

This commit is contained in:
Mikhail Trubnikov
2024-10-07 15:08:46 +10:00
parent 5c03b6bc81
commit 4ec47b1dcb
15 changed files with 7144 additions and 84 deletions

View File

@@ -0,0 +1,25 @@
using PARR.Constants;
namespace PARR.DAL.Models.Base.History.Base
{
/// <summary>
/// Инициатор изменений, ведение истории
/// </summary>
public interface IHistoryInitiator
{
/// <summary>
/// IP инициатора изменений (пользователь)
/// </summary>
public string? InitiatorIp { get; set; }
/// <summary>
/// Id инициатора компонента ПАРР
/// </summary>
public ParrComponentsEnum? InitiatorParrComponentId { get; set; }
/// <summary>
/// Комментарий от инициатора
/// </summary>
public string? InitiatorComment { get; set; }
}
}

View File

@@ -0,0 +1,18 @@
namespace PARR.DAL.Models.Base.History.Base
{
/// <summary>
/// Таблица отслеживания изменений основной таблицы (таблица истории)
/// </summary>
public interface IHistoryTable : IBase
{
/// <summary>
/// Id записи в родительской таблице
/// </summary>
public Guid ParentId { get; set; }
/// <summary>
/// Дата добавления в историю
/// </summary>
public DateTimeOffset DateAddedToHistory { get; set; }
}
}

View File

@@ -0,0 +1,9 @@
namespace PARR.DAL.Models.Base.History.Base
{
/// <summary>
/// По этому интерфейсу определям, что хотим вести историю.
/// В родительской таблице, по которой ведется история, указываются настройки истории.
/// </summary>
/// <typeparam name="HistoryTable">Таблица истории</typeparam>
public interface IMyHistory<HistoryTable> where HistoryTable : class { }
}

View File

@@ -1,7 +1,9 @@
namespace PARR.DAL.Models.Base
namespace PARR.DAL.Models.Base.History
{
public interface ITemplateBase
public interface ITemplateGeneralProps
{
public string Name { get; set; }
public bool IsActiveTemplate { get; set; }
public bool IsActiveSchedule { get; set; }

View File

@@ -0,0 +1,19 @@
using Microsoft.EntityFrameworkCore;
using PARR.Constants;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace PARR.DAL.Models
{
[Table("ParrComponents")]
[Index(nameof(Name), IsUnique = true)]
public class ParrComponent
{
[Key]
public ParrComponentsEnum Id { get; set; }
public required string Name { get; set; }
public required string Description { get; set; }
}
}

View File

@@ -1,5 +1,8 @@
using Microsoft.EntityFrameworkCore;
using PARR.Constants;
using PARR.DAL.Models.Base;
using PARR.DAL.Models.Base.History;
using PARR.DAL.Models.Base.History.Base;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
@@ -7,7 +10,7 @@ namespace PARR.DAL.Models
{
[Table("Templates")]
[Index(nameof(Name), IsUnique = true)]
public class Template : IBase, ITemplateBase
public class Template : IBase, ITemplateGeneralProps, IHistoryInitiator, IMyHistory<TemplateHistory>
{
[Key]
public Guid Id { get; set; }
@@ -41,12 +44,19 @@ namespace PARR.DAL.Models
public DateTimeOffset? LastRun { get; set; }
public DateTimeOffset NextRun { get; set; }
public Guid ApplicationInWorkId { get; set; }
#region Initiator
public string? InitiatorIp { get; set; }
public ParrComponentsEnum? InitiatorParrComponentId { get; set; }
public string? InitiatorComment { get; set; }
#endregion
[ForeignKey(nameof(ApplicationInWorkId))]
public ApplicationsInWork? ApplicationsInWork { get; set; }
@@ -62,6 +72,8 @@ namespace PARR.DAL.Models
public ICollection<Order> Orders { get; set; } = new HashSet<Order>();
//public ICollection<TemplateHistory> TemplateHistories { get; set; } = new HashSet<TemplateHistory>();
public ICollection<TemplateHistory> TemplateHistories { get; set; } = new HashSet<TemplateHistory>();
}
}

View File

@@ -1,24 +1,36 @@
using PARR.DAL.Models.Base;
using PARR.Constants;
using PARR.DAL.Models.Base;
using PARR.DAL.Models.Base.History;
using PARR.DAL.Models.Base.History.Base;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace PARR.DAL.Models
{
[Table("TemplateHistories")]
public class TemplateHistory : IBase, ITemplateBase
public class TemplateHistory : IBase, ITemplateGeneralProps, IHistoryInitiator, IHistoryTable
{
//!!! Не используется !!!
[Key]
public Guid Id { get; set; }
public Guid ParentId { get; set; }
public DateTimeOffset DateAddedToHistory { get; set; }
public string? InitiatorIp { get; set; }
public ParrComponentsEnum? InitiatorParrComponentId { get; set; }
public string? InitiatorComment { get; set; }
[NotMapped]
public DateTimeOffset DateCreated { get; set; }
public DateTimeOffset? DateModified { get; set; }
public Guid TemplateId { get; set; }
public required string Name { get; set; }
public bool IsActiveTemplate { get; set; }
@@ -28,8 +40,9 @@ namespace PARR.DAL.Models
public DateTimeOffset NextRun { get; set; }
//[ForeignKey(nameof(TemplateId))]
//public Template? Template { get; set; }
[ForeignKey(nameof(ParentId))]
public Template? Template { get; set; }
}