46 lines
1.7 KiB
C#
46 lines
1.7 KiB
C#
|
|
using DD.Persistence.Database.EntityAbstractions;
|
|
using DD.Persistence.ModelsAbstractions;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using System.ComponentModel.DataAnnotations;
|
|
using System.ComponentModel.DataAnnotations.Schema;
|
|
|
|
namespace DD.Persistence.Database.Entity;
|
|
|
|
/// <summary>
|
|
/// Часть записи, описывающая изменение
|
|
/// </summary>
|
|
[Table("change_log")]
|
|
public class ChangeLog : IDiscriminatorItem, IChangeLog
|
|
{
|
|
[Key, Comment("Ключ записи")]
|
|
public Guid Id { get; set; }
|
|
|
|
[Comment("Дискриминатор таблицы")]
|
|
public Guid DiscriminatorId { get; set; }
|
|
|
|
[Comment("Дата создания записи")]
|
|
public DateTimeOffset Creation { get; set; }
|
|
|
|
[Comment("Дата устаревания (например при удалении)")]
|
|
public DateTimeOffset? Obsolete { get; set; }
|
|
|
|
[Comment("Id заменяющей записи")]
|
|
public Guid? IdNext { get; set; }
|
|
|
|
[Column(TypeName = "jsonb"), Comment("Значение")]
|
|
public required IDictionary<string, object> Value { get; set; }
|
|
|
|
[Required, Comment("Id коммита на создание записи")]
|
|
public Guid IdCreatedCommit { get; set; }
|
|
|
|
[Comment("Id коммита на устаревание записи")]
|
|
public Guid? IdObsoletedCommit { get; set; }
|
|
|
|
[Required, ForeignKey(nameof(IdCreatedCommit)), Comment("Коммит пользователя на создание записи")]
|
|
public virtual ChangeLogCommit CreatedCommit { get; set; } = null!;
|
|
|
|
[ForeignKey(nameof(IdObsoletedCommit)), Comment("Коммит пользователя на устаревание записи")]
|
|
public virtual ChangeLogCommit? ObsoletedCommit { get; set; }
|
|
}
|