using Microsoft.EntityFrameworkCore; using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; namespace AsbCloudDb.Model; /// <summary> /// Часть записи описывающая изменение /// </summary> public abstract class ChangeLogAbstract { /// <summary> /// Актуальная /// </summary> public const int IdStateActual = 0; /// <summary> /// Замененная /// </summary> public const int IdStateReplaced = 1; /// <summary> /// Удаленная /// </summary> public const int IdStateDeleted = 2; /// <summary> /// Очищено при импорте /// </summary> public const int IdCleared = 3; /// <summary> /// Ид записи /// </summary> [Key] [Column("id"), Comment("Идентификатор")] public int Id { get; set; } /// <summary> /// Автор изменения /// </summary> [Column("id_author"), Comment("Автор")] public int IdAuthor { get; set; } /// <summary> /// Редактор /// </summary> [Column("id_editor"), Comment("Редактор")] public int? IdEditor { get; set; } /// <summary> /// Дата создания записи /// </summary> [Column("creation"), Comment("дата создания")] public DateTimeOffset Creation { get; set; } /// <summary> /// Дата устаревания (например при удалении) /// </summary> [Column("obsolete"), Comment("дата устаревания")] public DateTimeOffset? Obsolete { get; set; } /// <summary> /// ИД состояния записи: /// <list type="table"> /// <item> /// <term>0</term> /// <description>актуальная запись</description> /// </item> /// <item> /// <term>1</term> /// <description>замененная запись</description> /// </item> /// <item> /// <term>2</term> /// <description>удаленная запись</description> /// </item> /// </list> /// </summary> [Column("id_state"), Comment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная")] public int IdState { get; set; } /// <summary> /// Id заменяемой записи /// </summary> [Column("id_previous"), Comment("ИД состояния записи: \n0 - актуальная\n1 - замененная\n2 - удаленная")] public int? IdPrevious { get; set; } [ForeignKey(nameof(IdAuthor))] public virtual User Author { get; set; } = null!; [ForeignKey(nameof(IdEditor))] public virtual User? Editor { get; set; } }