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